compute: Add support for server lock reason
Add support for compute API microversion 2.73, which allowed admins to specify a reason for a server being locked. Change-Id: I676c3b2dd6b4135fb1ab65cc99315f87c13ec3a8 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
parent
0948ee52dd
commit
6fdc97b787
@ -969,15 +969,17 @@ class Proxy(proxy.Proxy):
|
|||||||
server = self._get_resource(_server.Server, server)
|
server = self._get_resource(_server.Server, server)
|
||||||
server.resume(self)
|
server.resume(self)
|
||||||
|
|
||||||
def lock_server(self, server):
|
def lock_server(self, server, locked_reason=None):
|
||||||
"""Locks a server.
|
"""Locks a server.
|
||||||
|
|
||||||
:param server: Either the ID of a server or a
|
:param server: Either the ID of a server or a
|
||||||
:class:`~openstack.compute.v2.server.Server` instance.
|
:class:`~openstack.compute.v2.server.Server` instance.
|
||||||
|
:param locked_reason: The reason behind locking the server. Limited to
|
||||||
|
255 characters in length.
|
||||||
:returns: None
|
:returns: None
|
||||||
"""
|
"""
|
||||||
server = self._get_resource(_server.Server, server)
|
server = self._get_resource(_server.Server, server)
|
||||||
server.lock(self)
|
server.lock(self, locked_reason=locked_reason)
|
||||||
|
|
||||||
def unlock_server(self, server):
|
def unlock_server(self, server):
|
||||||
"""Unlocks a locked server.
|
"""Unlocks a locked server.
|
||||||
|
@ -63,7 +63,7 @@ class Server(resource.Resource, metadata.MetadataMixin, resource.TagMixin):
|
|||||||
**resource.TagMixin._tag_query_parameters
|
**resource.TagMixin._tag_query_parameters
|
||||||
)
|
)
|
||||||
|
|
||||||
_max_microversion = '2.72'
|
_max_microversion = '2.73'
|
||||||
|
|
||||||
#: A list of dictionaries holding links relevant to this server.
|
#: A list of dictionaries holding links relevant to this server.
|
||||||
links = resource.Body('links')
|
links = resource.Body('links')
|
||||||
@ -412,8 +412,12 @@ class Server(resource.Resource, metadata.MetadataMixin, resource.TagMixin):
|
|||||||
body = {"resume": None}
|
body = {"resume": None}
|
||||||
self._action(session, body)
|
self._action(session, body)
|
||||||
|
|
||||||
def lock(self, session):
|
def lock(self, session, locked_reason=None):
|
||||||
body = {"lock": None}
|
body = {"lock": None}
|
||||||
|
if locked_reason is not None:
|
||||||
|
body["lock"] = {
|
||||||
|
"locked_reason": locked_reason,
|
||||||
|
}
|
||||||
self._action(session, body)
|
self._action(session, body)
|
||||||
|
|
||||||
def unlock(self, session):
|
def unlock(self, session):
|
||||||
|
@ -810,7 +810,17 @@ class TestCompute(TestComputeProxy):
|
|||||||
"openstack.compute.v2.server.Server.lock",
|
"openstack.compute.v2.server.Server.lock",
|
||||||
self.proxy.lock_server,
|
self.proxy.lock_server,
|
||||||
method_args=["value"],
|
method_args=["value"],
|
||||||
expected_args=[self.proxy])
|
expected_args=[self.proxy],
|
||||||
|
expected_kwargs={"locked_reason": None})
|
||||||
|
|
||||||
|
def test_server_lock_with_options(self):
|
||||||
|
self._verify(
|
||||||
|
"openstack.compute.v2.server.Server.lock",
|
||||||
|
self.proxy.lock_server,
|
||||||
|
method_args=["value"],
|
||||||
|
method_kwargs={"locked_reason": "Because why not"},
|
||||||
|
expected_args=[self.proxy],
|
||||||
|
expected_kwargs={"locked_reason": "Because why not"})
|
||||||
|
|
||||||
def test_server_unlock(self):
|
def test_server_unlock(self):
|
||||||
self._verify(
|
self._verify(
|
||||||
|
@ -649,6 +649,18 @@ class TestServer(base.TestCase):
|
|||||||
self.sess.post.assert_called_with(
|
self.sess.post.assert_called_with(
|
||||||
url, json=body, headers=headers, microversion=None)
|
url, json=body, headers=headers, microversion=None)
|
||||||
|
|
||||||
|
def test_lock_with_options(self):
|
||||||
|
sot = server.Server(**EXAMPLE)
|
||||||
|
|
||||||
|
res = sot.lock(self.sess, locked_reason='Because why not')
|
||||||
|
|
||||||
|
self.assertIsNone(res)
|
||||||
|
url = 'servers/IDENTIFIER/action'
|
||||||
|
body = {'lock': {'locked_reason': 'Because why not'}}
|
||||||
|
headers = {'Accept': ''}
|
||||||
|
self.sess.post.assert_called_with(
|
||||||
|
url, json=body, headers=headers, microversion=None)
|
||||||
|
|
||||||
def test_unlock(self):
|
def test_unlock(self):
|
||||||
sot = server.Server(**EXAMPLE)
|
sot = server.Server(**EXAMPLE)
|
||||||
|
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Add support for Compute API microversion 2.73, which allows admins to
|
||||||
|
specify a reason when locking a server.
|
Loading…
x
Reference in New Issue
Block a user