diff options
author | Zuul <zuul@review.opendev.org> | 2022-08-30 18:25:15 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2022-08-30 18:25:15 +0000 |
commit | d265e14cebb0f3568dcc287eb974bfaa024ddfdf (patch) | |
tree | be769d01b38e5ec1e4fd52f53a20d1f9fa5e54f7 | |
parent | 568ea2aec23caab6c47452b80940290c2f48caf3 (diff) | |
parent | 7c48148fe248cb7e0e591c26adb0faba2d7a92b9 (diff) | |
download | tempest-d265e14cebb0f3568dcc287eb974bfaa024ddfdf.tar.gz |
Merge "Tempest test for checking unshelve to host"
-rw-r--r-- | tempest/api/compute/admin/test_servers_on_multinodes.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tempest/api/compute/admin/test_servers_on_multinodes.py b/tempest/api/compute/admin/test_servers_on_multinodes.py index f44042831..90823062c 100644 --- a/tempest/api/compute/admin/test_servers_on_multinodes.py +++ b/tempest/api/compute/admin/test_servers_on_multinodes.py @@ -16,6 +16,7 @@ import testtools from tempest.api.compute import base from tempest.common import compute +from tempest.common import waiters from tempest import config from tempest.lib import decorators @@ -125,3 +126,47 @@ class ServersOnMultiNodesTest(base.BaseV2ComputeAdminTest): hostnames = list(hosts.values()) self.assertEqual(hostnames[0], hostnames[1], 'Servers are on the different hosts: %s' % hosts) + + +class UnshelveToHostMultiNodesTest(base.BaseV2ComputeAdminTest): + """Test to unshelve server in between hosts.""" + min_microversion = '2.91' + max_microversion = 'latest' + + @classmethod + def skip_checks(cls): + super(UnshelveToHostMultiNodesTest, cls).skip_checks() + + if CONF.compute.min_compute_nodes < 2: + raise cls.skipException( + "Less than 2 compute nodes, skipping multi-nodes test.") + + def _shelve_offload_then_unshelve_to_host(self, server, host): + compute.shelve_server(self.servers_client, server['id'], + force_shelve_offload=True) + + self.os_admin.servers_client.unshelve_server( + server['id'], + body={'unshelve': {'host': host}} + ) + waiters.wait_for_server_status(self.servers_client, server['id'], + 'ACTIVE') + + @decorators.idempotent_id('b5cc0889-50c2-46a0-b8ff-b5fb4c3a6e20') + def test_unshelve_to_specific_host(self): + """Test unshelve to a specific host, new behavior introduced in + microversion 2.91. + 1. Shelve offload server. + 2. Request unshelve to original host and verify server land on it. + 3. Shelve offload server again. + 4. Request unshelve to the other host and verify server land on it. + """ + server = self.create_test_server(wait_until='ACTIVE') + host = self.get_host_for_server(server['id']) + otherhost = self.get_host_other_than(server['id']) + + self._shelve_offload_then_unshelve_to_host(server, host) + self.assertEqual(host, self.get_host_for_server(server['id'])) + + self._shelve_offload_then_unshelve_to_host(server, otherhost) + self.assertEqual(otherhost, self.get_host_for_server(server['id'])) |