summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-08-30 18:25:15 +0000
committerGerrit Code Review <review@openstack.org>2022-08-30 18:25:15 +0000
commitd265e14cebb0f3568dcc287eb974bfaa024ddfdf (patch)
treebe769d01b38e5ec1e4fd52f53a20d1f9fa5e54f7
parent568ea2aec23caab6c47452b80940290c2f48caf3 (diff)
parent7c48148fe248cb7e0e591c26adb0faba2d7a92b9 (diff)
downloadtempest-d265e14cebb0f3568dcc287eb974bfaa024ddfdf.tar.gz
Merge "Tempest test for checking unshelve to host"
-rw-r--r--tempest/api/compute/admin/test_servers_on_multinodes.py45
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']))