diff options
author | Zuul <zuul@review.opendev.org> | 2022-08-02 15:47:54 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2022-08-02 15:47:54 +0000 |
commit | 89a76edc8d68212d65b6189669f9a7207f09655d (patch) | |
tree | e0be45f4260973f07d7339ac64ab9a07875bc8d5 /novaclient/tests | |
parent | 4d4cdb49922b5e27ab1f892a5a5f7ac5994eedf1 (diff) | |
parent | ee9b277c5f442f299b853118c900c3ee2996c67a (diff) | |
download | python-novaclient-89a76edc8d68212d65b6189669f9a7207f09655d.tar.gz |
Merge "Microversion 2.91: Support specifying destination host to unshelve"
Diffstat (limited to 'novaclient/tests')
-rw-r--r-- | novaclient/tests/unit/fixture_data/servers.py | 11 | ||||
-rw-r--r-- | novaclient/tests/unit/v2/fakes.py | 2 | ||||
-rw-r--r-- | novaclient/tests/unit/v2/test_servers.py | 98 |
3 files changed, 109 insertions, 2 deletions
diff --git a/novaclient/tests/unit/fixture_data/servers.py b/novaclient/tests/unit/fixture_data/servers.py index a8301548..8e53ecdb 100644 --- a/novaclient/tests/unit/fixture_data/servers.py +++ b/novaclient/tests/unit/fixture_data/servers.py @@ -439,6 +439,17 @@ class V1(Base): elif action == 'lock': return None elif action == 'unshelve': + if api_version >= api_versions.APIVersion("2.91"): + # In 2.91 and above, we allow body to be one of these: + # {'unshelve': None} + # {'unshelve': {'availability_zone': <string>}} + # {'unshelve': {'availability_zone': None}} (Unpin az) + # {'unshelve': {'host': <fqdn>}} + # {'unshelve': {'availability_zone': <string>, 'host': <fqdn>}} + # {'unshelve': {'availability_zone': None, 'host': <fqdn>}} + if body[action] is not None: + for key in body[action].keys(): + key in ['availability_zone', 'host'] return None elif action == 'rebuild': body = body[action] diff --git a/novaclient/tests/unit/v2/fakes.py b/novaclient/tests/unit/v2/fakes.py index 07216adc..059a7147 100644 --- a/novaclient/tests/unit/v2/fakes.py +++ b/novaclient/tests/unit/v2/fakes.py @@ -835,7 +835,7 @@ class FakeSessionClient(base_client.SessionClient): if self.api_version < api_versions.APIVersion("2.77"): assert body[action] is None else: - # In 2.77 and above, we allow body to be one of these: + # In 2.77 to 2.91, we allow body to be one of these: # {'unshelve': None} # {'unshelve': {'availability_zone': 'foo-az'}} if body[action] is not None: diff --git a/novaclient/tests/unit/v2/test_servers.py b/novaclient/tests/unit/v2/test_servers.py index 071ae5c1..93fefabf 100644 --- a/novaclient/tests/unit/v2/test_servers.py +++ b/novaclient/tests/unit/v2/test_servers.py @@ -1851,6 +1851,23 @@ class ServersV277Test(ServersV274Test): api_version = "2.77" + def test_unshelve(self): + s = self.cs.servers.get(1234) + # Test going through the Server object. + ret = s.unshelve() + self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) + self.assert_called( + 'POST', + '/servers/1234/action', + {'unshelve': None}) + # Test going through the ServerManager directly. + ret = self.cs.servers.unshelve(s) + self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) + self.assert_called( + 'POST', + '/servers/1234/action', + {'unshelve': None}) + def test_unshelve_with_az(self): s = self.cs.servers.get(1234) # Test going through the Server object. @@ -1883,7 +1900,7 @@ class ServersV277Test(ServersV274Test): str(ex)) -class ServersV278Test(ServersV273Test): +class ServersV278Test(ServersV277Test): api_version = "2.78" @@ -1992,3 +2009,82 @@ class ServersV290Test(ServersV278Test): s.update, hostname='new-hostname') self.assertIn('hostname', str(ex)) + + +class ServersV291Test(ServersV290Test): + + api_version = "2.91" + + def test_unshelve_with_host(self): + s = self.cs.servers.get(1234) + # Test going through the Server object. + ret = s.unshelve(host='server1') + self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) + self.assert_called( + 'POST', + '/servers/1234/action', + {'unshelve': {'host': 'server1'}}) + # Test going through the ServerManager directly. + ret = self.cs.servers.unshelve(s, host='server1') + self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) + self.assert_called( + 'POST', + '/servers/1234/action', + {'unshelve': {'host': 'server1'}}) + + def test_unshelve_server_with_az_and_host(self): + s = self.cs.servers.get(1234) + # Test going through the Server object. + ret = s.unshelve(host='server1', availability_zone='foo-az') + self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) + self.assert_called( + 'POST', + '/servers/1234/action', + {'unshelve': {'host': 'server1', + 'availability_zone': 'foo-az'}}) + # Test going through the ServerManager directly. + ret = self.cs.servers.unshelve( + s, host='server1', availability_zone='foo-az') + self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) + self.assert_called( + 'POST', + '/servers/1234/action', + {'unshelve': {'host': 'server1', + 'availability_zone': 'foo-az'}}) + + def test_unshelve_unpin_az(self): + s = self.cs.servers.get(1234) + # Test going through the Server object. + ret = s.unshelve(availability_zone=None) + self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) + self.assert_called( + 'POST', + '/servers/1234/action', + {'unshelve': {'availability_zone': None}}) + # Test going through the ServerManager directly. + ret = self.cs.servers.unshelve(s, availability_zone=None) + self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) + self.assert_called( + 'POST', + '/servers/1234/action', + {'unshelve': {'availability_zone': None}}) + + def test_unshelve_server_with_host_and_unpin(self): + s = self.cs.servers.get(1234) + # Test going through the Server object. + ret = s.unshelve(availability_zone=None, host='server1') + self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) + self.assert_called( + 'POST', + '/servers/1234/action', + {'unshelve': {'host': 'server1', + 'availability_zone': None}}) + # Test going through the ServerManager directly. + ret = self.cs.servers.unshelve( + s, availability_zone=None, host='server1') + self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST) + self.assert_called( + 'POST', + '/servers/1234/action', + {'unshelve': {'host': 'server1', + 'availability_zone': None}}) |