compute/server: add support of target state for evacuate API
Related-To: bp/allowing-target-state-for-evacuate Signed-off-by: Sahid Orentino Ferdjaoui <sahid.ferdjaoui@industrialdiscipline.com> Change-Id: Ieb8681bb4fd4834666b7bdb31d0ea6339c396400
This commit is contained in:
parent
9a17781629
commit
caa4e135e2
@ -944,7 +944,8 @@ class Proxy(proxy.Proxy):
|
||||
server = self._get_resource(_server.Server, server)
|
||||
server.unrescue(self)
|
||||
|
||||
def evacuate_server(self, server, host=None, admin_pass=None, force=None):
|
||||
def evacuate_server(self, server, host=None, admin_pass=None, force=None,
|
||||
target_state=None):
|
||||
"""Evacuates a server from a failed host to a new host.
|
||||
|
||||
:param server: Either the ID of a server or a
|
||||
@ -956,11 +957,13 @@ class Proxy(proxy.Proxy):
|
||||
:param force: Force an evacuation by not verifying the provided
|
||||
destination host by the scheduler. (New in API version
|
||||
2.29).
|
||||
:param target_state: Set target state for the evacuated instance (New
|
||||
in API version 2.94).
|
||||
:returns: None
|
||||
"""
|
||||
server = self._get_resource(_server.Server, server)
|
||||
server.evacuate(self, host=host, admin_pass=admin_pass,
|
||||
force=force)
|
||||
force=force, target_state=target_state)
|
||||
|
||||
def start_server(self, server):
|
||||
"""Starts a stopped server and changes its state to ``ACTIVE``.
|
||||
|
@ -459,7 +459,8 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
|
||||
body = {"unrescue": None}
|
||||
self._action(session, body)
|
||||
|
||||
def evacuate(self, session, host=None, admin_pass=None, force=None):
|
||||
def evacuate(self, session, host=None, admin_pass=None, force=None,
|
||||
target_state=None):
|
||||
body = {"evacuate": {}}
|
||||
if host is not None:
|
||||
body["evacuate"]["host"] = host
|
||||
@ -467,6 +468,8 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
|
||||
body["evacuate"]["adminPass"] = admin_pass
|
||||
if force is not None:
|
||||
body["evacuate"]["force"] = force
|
||||
if target_state is not None:
|
||||
body["evacuate"]["targetState"] = target_state
|
||||
self._action(session, body)
|
||||
|
||||
def start(self, session):
|
||||
|
@ -882,16 +882,18 @@ class TestCompute(TestComputeProxy):
|
||||
self.proxy.evacuate_server,
|
||||
method_args=["value"],
|
||||
expected_args=[self.proxy],
|
||||
expected_kwargs={"host": None, "admin_pass": None, "force": None})
|
||||
expected_kwargs={"host": None, "admin_pass": None, "force": None,
|
||||
"target_state": None})
|
||||
|
||||
def test_server_evacuate_with_options(self):
|
||||
self._verify(
|
||||
"openstack.compute.v2.server.Server.evacuate",
|
||||
self.proxy.evacuate_server,
|
||||
method_args=["value", 'HOST2', 'NEW_PASS', True],
|
||||
method_args=["value", 'HOST2', 'NEW_PASS', True, 'stopped'],
|
||||
expected_args=[self.proxy],
|
||||
expected_kwargs={
|
||||
"host": "HOST2", "admin_pass": 'NEW_PASS', "force": True})
|
||||
"host": "HOST2", "admin_pass": 'NEW_PASS', "force": True,
|
||||
"target_state": 'stopped'})
|
||||
|
||||
def test_server_start(self):
|
||||
self._verify(
|
||||
|
@ -735,12 +735,12 @@ class TestServer(base.TestCase):
|
||||
sot = server.Server(**EXAMPLE)
|
||||
|
||||
res = sot.evacuate(self.sess, host='HOST2', admin_pass='NEW_PASS',
|
||||
force=True)
|
||||
force=True, target_state='stopped')
|
||||
|
||||
self.assertIsNone(res)
|
||||
url = 'servers/IDENTIFIER/action'
|
||||
body = {"evacuate": {'host': 'HOST2', 'adminPass': 'NEW_PASS',
|
||||
'force': True}}
|
||||
'force': True, 'targetState': 'stopped'}}
|
||||
headers = {'Accept': ''}
|
||||
self.sess.post.assert_called_with(
|
||||
url, json=body, headers=headers, microversion=None)
|
||||
|
@ -0,0 +1,3 @@
|
||||
---
|
||||
features:
|
||||
- Add support of setting target state for evacuate API.
|
Loading…
x
Reference in New Issue
Block a user