From 017b5fe060a4d83f6e13fd06beadc0318422233e Mon Sep 17 00:00:00 2001 From: ghanshyam Date: Fri, 15 Apr 2016 18:49:26 +0900 Subject: [PATCH] Move shelve server logic in compute utility shelve server logic has been duplicated many place and also needed by more tests. It better to make that a utils function and used from there. Change-Id: I391f0bb92da1ddc76efcf026e8dea536edfd3706 --- .../api/compute/servers/test_delete_server.py | 11 ++------ .../compute/servers/test_server_actions.py | 17 +++--------- .../compute/servers/test_servers_negative.py | 14 ++-------- tempest/common/compute.py | 26 +++++++++++++++++++ tempest/scenario/test_shelve_instance.py | 16 +++--------- 5 files changed, 37 insertions(+), 47 deletions(-) diff --git a/tempest/api/compute/servers/test_delete_server.py b/tempest/api/compute/servers/test_delete_server.py index 6796bb58a6..079465df41 100644 --- a/tempest/api/compute/servers/test_delete_server.py +++ b/tempest/api/compute/servers/test_delete_server.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 import test @@ -84,16 +85,8 @@ class DeleteServersTestJSON(base.BaseV2ComputeTest): def test_delete_server_while_in_shelved_state(self): # Delete a server while it's VM state is Shelved server = self.create_test_server(wait_until='ACTIVE') - self.client.shelve_server(server['id']) + compute.shelve_server(self.client, server['id']) - offload_time = CONF.compute.shelved_offload_time - if offload_time >= 0: - waiters.wait_for_server_status(self.client, server['id'], - 'SHELVED_OFFLOADED', - extra_timeout=offload_time) - else: - waiters.wait_for_server_status(self.client, server['id'], - 'SHELVED') self.client.delete_server(server['id']) waiters.wait_for_server_termination(self.client, server['id']) diff --git a/tempest/api/compute/servers/test_server_actions.py b/tempest/api/compute/servers/test_server_actions.py index 5b4417a0d0..f3aa16a9fe 100644 --- a/tempest/api/compute/servers/test_server_actions.py +++ b/tempest/api/compute/servers/test_server_actions.py @@ -19,6 +19,7 @@ from six.moves.urllib import parse as urlparse import testtools from tempest.api.compute import base +from tempest.common import compute from tempest.common.utils import data_utils from tempest.common.utils.linux import remote_client from tempest.common import waiters @@ -440,20 +441,8 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest): @testtools.skipUnless(CONF.compute_feature_enabled.shelve, 'Shelve is not available.') def test_shelve_unshelve_server(self): - self.client.shelve_server(self.server_id) - - offload_time = CONF.compute.shelved_offload_time - if offload_time >= 0: - waiters.wait_for_server_status(self.client, self.server_id, - 'SHELVED_OFFLOADED', - extra_timeout=offload_time) - else: - waiters.wait_for_server_status(self.client, self.server_id, - 'SHELVED') - - self.client.shelve_offload_server(self.server_id) - waiters.wait_for_server_status(self.client, self.server_id, - 'SHELVED_OFFLOADED') + compute.shelve_server(self.client, self.server_id, + force_shelve_offload=True) server = self.client.show_server(self.server_id)['server'] image_name = server['name'] + '-shelved' diff --git a/tempest/api/compute/servers/test_servers_negative.py b/tempest/api/compute/servers/test_servers_negative.py index 8f0e430134..10ea31d070 100644 --- a/tempest/api/compute/servers/test_servers_negative.py +++ b/tempest/api/compute/servers/test_servers_negative.py @@ -18,6 +18,7 @@ import sys import testtools from tempest.api.compute import base +from tempest.common import compute from tempest.common.utils import data_utils from tempest.common import waiters from tempest import config @@ -453,18 +454,7 @@ class ServersNegativeTestJSON(base.BaseV2ComputeTest): @test.attr(type=['negative']) def test_shelve_shelved_server(self): # shelve a shelved server. - self.client.shelve_server(self.server_id) - - offload_time = CONF.compute.shelved_offload_time - if offload_time >= 0: - waiters.wait_for_server_status(self.client, - self.server_id, - 'SHELVED_OFFLOADED', - extra_timeout=offload_time) - else: - waiters.wait_for_server_status(self.client, - self.server_id, - 'SHELVED') + compute.shelve_server(self.client, self.server_id) server = self.client.show_server(self.server_id)['server'] image_name = server['name'] + '-shelved' diff --git a/tempest/common/compute.py b/tempest/common/compute.py index b5c4547615..7ebc28385f 100644 --- a/tempest/common/compute.py +++ b/tempest/common/compute.py @@ -157,3 +157,29 @@ def create_test_server(clients, validatable=False, validation_resources=None, % server['id']) return body, servers + + +def shelve_server(client, server_id, force_shelve_offload=False): + """Common wrapper utility to shelve server. + + This method is a common wrapper to make server in 'SHELVED' + or 'SHELVED_OFFLOADED' state. + + :param server_id: Server to make in shelve state + :param force_shelve_offload: Forcefully offload shelve server if it + is configured not to offload server + automatically after offload time. + """ + client.shelve_server(server_id) + + offload_time = CONF.compute.shelved_offload_time + if offload_time >= 0: + waiters.wait_for_server_status(client, server_id, + 'SHELVED_OFFLOADED', + extra_timeout=offload_time) + else: + waiters.wait_for_server_status(client, server_id, 'SHELVED') + if force_shelve_offload: + client.shelve_offload_server(server_id) + waiters.wait_for_server_status(client, server_id, + 'SHELVED_OFFLOADED') diff --git a/tempest/scenario/test_shelve_instance.py b/tempest/scenario/test_shelve_instance.py index 77de47eac2..6d3ecd484f 100644 --- a/tempest/scenario/test_shelve_instance.py +++ b/tempest/scenario/test_shelve_instance.py @@ -15,6 +15,7 @@ import testtools +from tempest.common import compute from tempest.common import waiters from tempest import config from tempest.scenario import manager @@ -35,18 +36,9 @@ class TestShelveInstance(manager.ScenarioTest): """ def _shelve_then_unshelve_server(self, server): - self.servers_client.shelve_server(server['id']) - offload_time = CONF.compute.shelved_offload_time - if offload_time >= 0: - waiters.wait_for_server_status(self.servers_client, server['id'], - 'SHELVED_OFFLOADED', - extra_timeout=offload_time) - else: - waiters.wait_for_server_status(self.servers_client, - server['id'], 'SHELVED') - self.servers_client.shelve_offload_server(server['id']) - waiters.wait_for_server_status(self.servers_client, server['id'], - 'SHELVED_OFFLOADED') + compute.shelve_server(self.servers_client, server['id'], + force_shelve_offload=True) + self.servers_client.unshelve_server(server['id']) waiters.wait_for_server_status(self.servers_client, server['id'], 'ACTIVE')