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
This commit is contained in:
ghanshyam 2016-04-15 18:49:26 +09:00
parent 9aa74e4de9
commit 017b5fe060
5 changed files with 37 additions and 47 deletions

View File

@ -16,6 +16,7 @@
import testtools import testtools
from tempest.api.compute import base from tempest.api.compute import base
from tempest.common import compute
from tempest.common import waiters from tempest.common import waiters
from tempest import config from tempest import config
from tempest import test from tempest import test
@ -84,16 +85,8 @@ class DeleteServersTestJSON(base.BaseV2ComputeTest):
def test_delete_server_while_in_shelved_state(self): def test_delete_server_while_in_shelved_state(self):
# Delete a server while it's VM state is Shelved # Delete a server while it's VM state is Shelved
server = self.create_test_server(wait_until='ACTIVE') 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']) self.client.delete_server(server['id'])
waiters.wait_for_server_termination(self.client, server['id']) waiters.wait_for_server_termination(self.client, server['id'])

View File

@ -19,6 +19,7 @@ from six.moves.urllib import parse as urlparse
import testtools import testtools
from tempest.api.compute import base from tempest.api.compute import base
from tempest.common import compute
from tempest.common.utils import data_utils from tempest.common.utils import data_utils
from tempest.common.utils.linux import remote_client from tempest.common.utils.linux import remote_client
from tempest.common import waiters from tempest.common import waiters
@ -440,20 +441,8 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
@testtools.skipUnless(CONF.compute_feature_enabled.shelve, @testtools.skipUnless(CONF.compute_feature_enabled.shelve,
'Shelve is not available.') 'Shelve is not available.')
def test_shelve_unshelve_server(self): def test_shelve_unshelve_server(self):
self.client.shelve_server(self.server_id) compute.shelve_server(self.client, self.server_id,
force_shelve_offload=True)
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')
server = self.client.show_server(self.server_id)['server'] server = self.client.show_server(self.server_id)['server']
image_name = server['name'] + '-shelved' image_name = server['name'] + '-shelved'

View File

@ -18,6 +18,7 @@ import sys
import testtools import testtools
from tempest.api.compute import base from tempest.api.compute import base
from tempest.common import compute
from tempest.common.utils import data_utils from tempest.common.utils import data_utils
from tempest.common import waiters from tempest.common import waiters
from tempest import config from tempest import config
@ -453,18 +454,7 @@ class ServersNegativeTestJSON(base.BaseV2ComputeTest):
@test.attr(type=['negative']) @test.attr(type=['negative'])
def test_shelve_shelved_server(self): def test_shelve_shelved_server(self):
# shelve a shelved server. # shelve a shelved server.
self.client.shelve_server(self.server_id) compute.shelve_server(self.client, 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')
server = self.client.show_server(self.server_id)['server'] server = self.client.show_server(self.server_id)['server']
image_name = server['name'] + '-shelved' image_name = server['name'] + '-shelved'

View File

@ -157,3 +157,29 @@ def create_test_server(clients, validatable=False, validation_resources=None,
% server['id']) % server['id'])
return body, servers 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')

View File

@ -15,6 +15,7 @@
import testtools import testtools
from tempest.common import compute
from tempest.common import waiters from tempest.common import waiters
from tempest import config from tempest import config
from tempest.scenario import manager from tempest.scenario import manager
@ -35,18 +36,9 @@ class TestShelveInstance(manager.ScenarioTest):
""" """
def _shelve_then_unshelve_server(self, server): def _shelve_then_unshelve_server(self, server):
self.servers_client.shelve_server(server['id']) compute.shelve_server(self.servers_client, server['id'],
offload_time = CONF.compute.shelved_offload_time force_shelve_offload=True)
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')
self.servers_client.unshelve_server(server['id']) self.servers_client.unshelve_server(server['id'])
waiters.wait_for_server_status(self.servers_client, server['id'], waiters.wait_for_server_status(self.servers_client, server['id'],
'ACTIVE') 'ACTIVE')