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
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'])

View File

@ -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'

View File

@ -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'

View File

@ -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')

View File

@ -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')