Removing wrapper method for "wait_for_volume_status" function

The wait_for_volume_status method in the base_volumes_client.py file is
a wrapper method that just uses the waiters.wait_for_volume_status function.
The wait_for_volume_status method is not a service method and that is why
it should be removed and the waiters.wait_for_volume_status function should
be used instead.

Partially implements blueprint consistent-service-method-names

Change-Id: I4516a2cc2dd6ada8d0a49392a98b949edc09a9fd
This commit is contained in:
Yaroslav Lobankov 2016-03-24 22:41:30 -05:00
parent b0953f8eb7
commit ed3a35b3cc
20 changed files with 94 additions and 67 deletions

View File

@ -81,7 +81,8 @@ class LiveBlockMigrationTestJSON(base.BaseV2ComputeAdminTest):
body = self.volumes_client.show_volume(volume_id)['volume']
if body['status'] == 'in-use':
self.servers_client.detach_volume(server_id, volume_id)
self.volumes_client.wait_for_volume_status(volume_id, 'available')
waiters.wait_for_volume_status(self.volumes_client,
volume_id, 'available')
self.volumes_client.delete_volume(volume_id)
def _test_live_migration(self, state='ACTIVE', volume_backed=False):
@ -152,14 +153,15 @@ class LiveBlockMigrationTestJSON(base.BaseV2ComputeAdminTest):
volume = self.volumes_client.create_volume(
display_name='test')['volume']
self.volumes_client.wait_for_volume_status(volume['id'],
'available')
waiters.wait_for_volume_status(self.volumes_client,
volume['id'], 'available')
self.addCleanup(self._volume_clean_up, server_id, volume['id'])
# Attach the volume to the server
self.servers_client.attach_volume(server_id, volumeId=volume['id'],
device='/dev/xvdb')
self.volumes_client.wait_for_volume_status(volume['id'], 'in-use')
waiters.wait_for_volume_status(self.volumes_client,
volume['id'], 'in-use')
self._migrate_server_to(server_id, target_host)
waiters.wait_for_server_status(self.servers_client,

View File

@ -52,7 +52,8 @@ class AttachVolumeTestJSON(base.BaseV2ComputeTest):
def _detach(self, server_id, volume_id):
if self.attachment:
self.servers_client.detach_volume(server_id, volume_id)
self.volumes_client.wait_for_volume_status(volume_id, 'available')
waiters.wait_for_volume_status(self.volumes_client,
volume_id, 'available')
def _delete_volume(self):
# Delete the created Volumes
@ -77,15 +78,16 @@ class AttachVolumeTestJSON(base.BaseV2ComputeTest):
self.volume = self.volumes_client.create_volume(
size=CONF.volume.volume_size, display_name='test')['volume']
self.addCleanup(self._delete_volume)
self.volumes_client.wait_for_volume_status(self.volume['id'],
'available')
waiters.wait_for_volume_status(self.volumes_client,
self.volume['id'], 'available')
# Attach the volume to the server
self.attachment = self.servers_client.attach_volume(
self.server['id'],
volumeId=self.volume['id'],
device='/dev/%s' % self.device)['volumeAttachment']
self.volumes_client.wait_for_volume_status(self.volume['id'], 'in-use')
waiters.wait_for_volume_status(self.volumes_client,
self.volume['id'], 'in-use')
self.addCleanup(self._detach, self.server['id'], self.volume['id'])

View File

@ -13,6 +13,7 @@
import six
from tempest.api.volume import base
from tempest.common.utils import data_utils
from tempest.common import waiters
from tempest import config
from tempest import test
@ -80,8 +81,8 @@ class VolumeMultiBackendV2Test(base.BaseVolumeAdminTest):
else:
self.volume_id_list_without_prefix.append(
self.volume['id'])
self.admin_volume_client.wait_for_volume_status(
self.volume['id'], 'available')
waiters.wait_for_volume_status(self.admin_volume_client,
self.volume['id'], 'available')
@classmethod
def resource_cleanup(cls):

View File

@ -15,6 +15,7 @@
from tempest.api.volume import base
from tempest.common.utils import data_utils
from tempest.common import waiters
from tempest import config
from tempest import test
@ -41,10 +42,9 @@ class SnapshotsActionsV2Test(base.BaseVolumeAdminTest):
vol_name = data_utils.rand_name(cls.__name__ + '-Volume')
cls.name_field = cls.special_fields['name_field']
params = {cls.name_field: vol_name}
cls.volume = \
cls.volumes_client.create_volume(**params)['volume']
cls.volumes_client.wait_for_volume_status(cls.volume['id'],
'available')
cls.volume = cls.volumes_client.create_volume(**params)['volume']
waiters.wait_for_volume_status(cls.volumes_client,
cls.volume['id'], 'available')
# Create a test shared snapshot for tests
snap_name = data_utils.rand_name(cls.__name__ + '-Snapshot')

View File

@ -15,6 +15,7 @@
from tempest.api.volume import base
from tempest.common.utils import data_utils
from tempest.common import waiters
from tempest import config
from tempest import test
@ -66,12 +67,14 @@ class VolumeTypesV2Test(base.BaseVolumeAdminTest):
"to the requested name")
self.assertIsNotNone(volume['id'],
"Field volume id is empty or not found.")
self.volumes_client.wait_for_volume_status(volume['id'], 'available')
waiters.wait_for_volume_status(self.volumes_client,
volume['id'], 'available')
# Update volume with new volume_type
self.volumes_client.retype_volume(volume['id'],
new_type=volume_types[1]['id'])
self.volumes_client.wait_for_volume_status(volume['id'], 'available')
waiters.wait_for_volume_status(self.volumes_client,
volume['id'], 'available')
# Get volume details and Verify
fetched_volume = self.volumes_client.show_volume(

View File

@ -15,6 +15,7 @@
from tempest.api.volume import base
from tempest.common.utils import data_utils as utils
from tempest.common import waiters
from tempest import test
@ -35,7 +36,8 @@ class VolumesActionsV2Test(base.BaseVolumeAdminTest):
params = {cls.name_field: vol_name}
cls.volume = cls.client.create_volume(**params)['volume']
cls.client.wait_for_volume_status(cls.volume['id'], 'available')
waiters.wait_for_volume_status(cls.client,
cls.volume['id'], 'available')
@classmethod
def resource_cleanup(cls):
@ -61,7 +63,8 @@ class VolumesActionsV2Test(base.BaseVolumeAdminTest):
vol_name = utils.rand_name('Volume')
params = {self.name_field: vol_name}
temp_volume = self.client.create_volume(**params)['volume']
self.client.wait_for_volume_status(temp_volume['id'], 'available')
waiters.wait_for_volume_status(self.client,
temp_volume['id'], 'available')
return temp_volume

View File

@ -15,6 +15,7 @@
from tempest.api.volume import base
from tempest.common.utils import data_utils
from tempest.common import waiters
from tempest import config
from tempest.lib import decorators
from tempest import test
@ -50,8 +51,8 @@ class VolumesBackupsV2Test(base.BaseVolumeAdminTest):
self.addCleanup(self.backups_adm_client.delete_backup,
backup['id'])
self.assertEqual(backup_name, backup['name'])
self.admin_volume_client.wait_for_volume_status(
self.volume['id'], 'available')
waiters.wait_for_volume_status(self.admin_volume_client,
self.volume['id'], 'available')
self.backups_adm_client.wait_for_backup_status(backup['id'],
'available')
@ -74,8 +75,8 @@ class VolumesBackupsV2Test(base.BaseVolumeAdminTest):
self.assertEqual(backup['id'], restore['backup_id'])
self.backups_adm_client.wait_for_backup_status(backup['id'],
'available')
self.admin_volume_client.wait_for_volume_status(
restore['volume_id'], 'available')
waiters.wait_for_volume_status(self.admin_volume_client,
restore['volume_id'], 'available')
@decorators.skip_because(bug='1455043')
@test.idempotent_id('a99c54a1-dd80-4724-8a13-13bf58d4068d')
@ -117,8 +118,8 @@ class VolumesBackupsV2Test(base.BaseVolumeAdminTest):
self.addCleanup(self.admin_volume_client.delete_volume,
restore['volume_id'])
self.assertEqual(import_backup['id'], restore['backup_id'])
self.admin_volume_client.wait_for_volume_status(restore['volume_id'],
'available')
waiters.wait_for_volume_status(self.admin_volume_client,
restore['volume_id'], 'available')
# Verify if restored volume is there in volume list
volumes = self.admin_volume_client.list_volumes()['volumes']

View File

@ -15,6 +15,7 @@
from tempest.common import compute
from tempest.common.utils import data_utils
from tempest.common import waiters
from tempest import config
from tempest import exceptions
from tempest.lib import exceptions as lib_exc
@ -112,7 +113,8 @@ class BaseVolumeTest(tempest.test.BaseTestCase):
volume = cls.volumes_client.create_volume(**kwargs)['volume']
cls.volumes.append(volume)
cls.volumes_client.wait_for_volume_status(volume['id'], 'available')
waiters.wait_for_volume_status(cls.volumes_client,
volume['id'], 'available')
return volume
@classmethod

View File

@ -16,6 +16,7 @@
from testtools import matchers
from tempest.api.volume import base
from tempest.common import waiters
from tempest import config
from tempest import test
@ -51,8 +52,8 @@ class VolumesV2TransfersTest(base.BaseVolumeTest):
volume_id=volume['id'])['transfer']
transfer_id = transfer['id']
auth_key = transfer['auth_key']
self.client.wait_for_volume_status(volume['id'],
'awaiting-transfer')
waiters.wait_for_volume_status(self.client,
volume['id'], 'awaiting-transfer')
# Get a volume transfer
body = self.client.show_volume_transfer(transfer_id)['transfer']
@ -66,7 +67,8 @@ class VolumesV2TransfersTest(base.BaseVolumeTest):
# Accept a volume transfer by alt_tenant
body = self.alt_client.accept_volume_transfer(
transfer_id, auth_key=auth_key)['transfer']
self.alt_client.wait_for_volume_status(volume['id'], 'available')
waiters.wait_for_volume_status(self.alt_client,
volume['id'], 'available')
@test.idempotent_id('ab526943-b725-4c07-b875-8e8ef87a2c30')
def test_create_list_delete_volume_transfer(self):
@ -78,8 +80,8 @@ class VolumesV2TransfersTest(base.BaseVolumeTest):
body = self.client.create_volume_transfer(
volume_id=volume['id'])['transfer']
transfer_id = body['id']
self.client.wait_for_volume_status(volume['id'],
'awaiting-transfer')
waiters.wait_for_volume_status(self.client,
volume['id'], 'awaiting-transfer')
# List all volume transfers (looking for the one we created)
body = self.client.list_volume_transfers()['transfers']
@ -91,7 +93,7 @@ class VolumesV2TransfersTest(base.BaseVolumeTest):
# Delete a volume transfer
self.client.delete_volume_transfer(transfer_id)
self.client.wait_for_volume_status(volume['id'], 'available')
waiters.wait_for_volume_status(self.client, volume['id'], 'available')
class VolumesV1TransfersTest(VolumesV2TransfersTest):

View File

@ -43,7 +43,8 @@ class VolumesV2ActionsTest(base.BaseVolumeTest):
# Create a test shared volume for attach/detach tests
cls.volume = cls.create_volume()
cls.client.wait_for_volume_status(cls.volume['id'], 'available')
waiters.wait_for_volume_status(cls.client,
cls.volume['id'], 'available')
@classmethod
def resource_cleanup(cls):
@ -64,9 +65,11 @@ class VolumesV2ActionsTest(base.BaseVolumeTest):
self.client.attach_volume(self.volume['id'],
instance_uuid=self.server['id'],
mountpoint=mountpoint)
self.client.wait_for_volume_status(self.volume['id'], 'in-use')
waiters.wait_for_volume_status(self.client,
self.volume['id'], 'in-use')
self.client.detach_volume(self.volume['id'])
self.client.wait_for_volume_status(self.volume['id'], 'available')
waiters.wait_for_volume_status(self.client,
self.volume['id'], 'available')
@test.idempotent_id('63e21b4c-0a0c-41f6-bfc3-7c2816815599')
@testtools.skipUnless(CONF.volume_feature_enabled.bootable,
@ -91,10 +94,11 @@ class VolumesV2ActionsTest(base.BaseVolumeTest):
self.client.attach_volume(self.volume['id'],
instance_uuid=self.server['id'],
mountpoint=mountpoint)
self.client.wait_for_volume_status(self.volume['id'], 'in-use')
waiters.wait_for_volume_status(self.client,
self.volume['id'], 'in-use')
# NOTE(gfidente): added in reverse order because functions will be
# called in reverse order to the order they are added (LIFO)
self.addCleanup(self.client.wait_for_volume_status,
self.addCleanup(waiters.wait_for_volume_status, self.client,
self.volume['id'],
'available')
self.addCleanup(self.client.detach_volume, self.volume['id'])
@ -120,7 +124,8 @@ class VolumesV2ActionsTest(base.BaseVolumeTest):
image_id = body["image_id"]
self.addCleanup(self.image_client.delete_image, image_id)
self.image_client.wait_for_image_status(image_id, 'active')
self.client.wait_for_volume_status(self.volume['id'], 'available')
waiters.wait_for_volume_status(self.client,
self.volume['id'], 'available')
@test.idempotent_id('92c4ef64-51b2-40c0-9f7e-4749fbaaba33')
def test_reserve_unreserve_volume(self):

View File

@ -14,6 +14,7 @@
# under the License.
from tempest.api.volume import base
from tempest.common import waiters
from tempest import config
from tempest import test
@ -33,7 +34,8 @@ class VolumesV2ExtendTest(base.BaseVolumeTest):
self.volume = self.create_volume()
extend_size = int(self.volume['size']) + 1
self.client.extend_volume(self.volume['id'], new_size=extend_size)
self.client.wait_for_volume_status(self.volume['id'], 'available')
waiters.wait_for_volume_status(self.client,
self.volume['id'], 'available')
volume = self.client.show_volume(self.volume['id'])['volume']
self.assertEqual(int(volume['size']), extend_size)

View File

@ -18,6 +18,7 @@ from testtools import matchers
from tempest.api.volume import base
from tempest.common.utils import data_utils
from tempest.common import waiters
from tempest import config
from tempest import test
@ -53,7 +54,7 @@ class VolumesV2GetTest(base.BaseVolumeTest):
volume = self.client.create_volume(**kwargs)['volume']
self.assertIn('id', volume)
self.addCleanup(self._delete_volume, volume['id'])
self.client.wait_for_volume_status(volume['id'], 'available')
waiters.wait_for_volume_status(self.client, volume['id'], 'available')
self.assertIn(self.name_field, volume)
self.assertEqual(volume[self.name_field], v_name,
"The created volume name is not equal "
@ -113,7 +114,8 @@ class VolumesV2GetTest(base.BaseVolumeTest):
new_volume = self.client.create_volume(**params)['volume']
self.assertIn('id', new_volume)
self.addCleanup(self._delete_volume, new_volume['id'])
self.client.wait_for_volume_status(new_volume['id'], 'available')
waiters.wait_for_volume_status(self.client,
new_volume['id'], 'available')
params = {self.name_field: volume[self.name_field],
self.descrip_field: volume[self.descrip_field]}

View File

@ -12,6 +12,7 @@
from tempest.api.volume import base
from tempest.common.utils import data_utils
from tempest.common import waiters
from tempest import config
from tempest import test
@ -37,7 +38,8 @@ class VolumesV2SnapshotTestJSON(base.BaseVolumeTest):
def _detach(self, volume_id):
"""Detach volume."""
self.volumes_client.detach_volume(volume_id)
self.volumes_client.wait_for_volume_status(volume_id, 'available')
waiters.wait_for_volume_status(self.volumes_client,
volume_id, 'available')
def _list_by_param_values_and_assert(self, with_detail=False, **params):
"""list or list_details with given params and validates result."""
@ -70,9 +72,9 @@ class VolumesV2SnapshotTestJSON(base.BaseVolumeTest):
self.servers_client.attach_volume(
server['id'], volumeId=self.volume_origin['id'],
device=mountpoint)
self.volumes_client.wait_for_volume_status(self.volume_origin['id'],
'in-use')
self.addCleanup(self.volumes_client.wait_for_volume_status,
waiters.wait_for_volume_status(self.volumes_client,
self.volume_origin['id'], 'in-use')
self.addCleanup(waiters.wait_for_volume_status, self.volumes_client,
self.volume_origin['id'], 'available')
self.addCleanup(self.servers_client.detach_volume, server['id'],
self.volume_origin['id'])
@ -171,7 +173,8 @@ class VolumesV2SnapshotTestJSON(base.BaseVolumeTest):
# NOTE(gfidente): size is required also when passing snapshot_id
volume = self.volumes_client.create_volume(
snapshot_id=snapshot['id'])['volume']
self.volumes_client.wait_for_volume_status(volume['id'], 'available')
waiters.wait_for_volume_status(self.volumes_client,
volume['id'], 'available')
self.volumes_client.delete_volume(volume['id'])
self.volumes_client.wait_for_resource_deletion(volume['id'])
self.cleanup_snapshot(snapshot)

View File

@ -1031,7 +1031,7 @@ def create_volumes(volumes):
v_name = volume['name']
body = client.volumes.create_volume(size=size,
display_name=v_name)['volume']
client.volumes.wait_for_volume_status(body['id'], 'available')
waiters.wait_for_volume_status(client.volumes, body['id'], 'available')
def destroy_volumes(volumes):

View File

@ -98,8 +98,8 @@ def create_test_server(clients, validatable=False, validation_resources=None,
volume = volumes_client.create_volume(
display_name=volume_name,
imageRef=image_id)
volumes_client.wait_for_volume_status(volume['volume']['id'],
'available')
waiters.wait_for_volume_status(volumes_client,
volume['volume']['id'], 'available')
bd_map_v2 = [{
'uuid': volume['volume']['id'],

View File

@ -283,7 +283,8 @@ class ScenarioTest(tempest.test.BaseTestCase):
self.assertEqual(name, volume['display_name'])
else:
self.assertEqual(name, volume['name'])
self.volumes_client.wait_for_volume_status(volume['id'], 'available')
waiters.wait_for_volume_status(self.volumes_client,
volume['id'], 'available')
# The volume retrieved on creation has a non-up-to-date status.
# Retrieval after it becomes active ensures correct details.
volume = self.volumes_client.show_volume(volume['id'])['volume']
@ -492,14 +493,16 @@ class ScenarioTest(tempest.test.BaseTestCase):
server['id'], volumeId=volume_to_attach['id'], device='/dev/%s'
% CONF.compute.volume_device_name)['volumeAttachment']
self.assertEqual(volume_to_attach['id'], volume['id'])
self.volumes_client.wait_for_volume_status(volume['id'], 'in-use')
waiters.wait_for_volume_status(self.volumes_client,
volume['id'], 'in-use')
# Return the updated volume after the attachment
return self.volumes_client.show_volume(volume['id'])['volume']
def nova_volume_detach(self, server, volume):
self.servers_client.detach_volume(server['id'], volume['id'])
self.volumes_client.wait_for_volume_status(volume['id'], 'available')
waiters.wait_for_volume_status(self.volumes_client,
volume['id'], 'available')
volume = self.volumes_client.show_volume(volume['id'])['volume']
self.assertEqual('available', volume['status'])

View File

@ -19,6 +19,7 @@ from oslo_log import log as logging
import testtools
from tempest.common.utils import data_utils
from tempest.common import waiters
from tempest import config
from tempest import exceptions
from tempest.lib import decorators
@ -72,7 +73,8 @@ class TestStampPattern(manager.ScenarioTest):
except lib_exc.NotFound:
pass
self.addCleanup(cleaner)
self.volumes_client.wait_for_volume_status(volume['id'], 'available')
waiters.wait_for_volume_status(self.volumes_client,
volume['id'], 'available')
self.snapshots_client.wait_for_snapshot_status(snapshot['id'],
'available')
self.assertEqual(snapshot_name, snapshot['display_name'])

View File

@ -17,7 +17,6 @@ from oslo_serialization import jsonutils as json
import six
from six.moves.urllib import parse as urllib
from tempest.common import waiters
from tempest.lib.common import rest_client
from tempest.lib import exceptions as lib_exc
@ -148,10 +147,6 @@ class BaseVolumesClient(rest_client.RestClient):
self.expected_success(202, resp.status)
return rest_client.ResponseBody(resp, body)
def wait_for_volume_status(self, volume_id, status):
"""Waits for a Volume to reach a given status."""
waiters.wait_for_volume_status(self, volume_id, status)
def is_resource_deleted(self, id):
try:
self.show_volume(id)

View File

@ -105,8 +105,8 @@ def cleanup():
LOG.info("Cleanup::remove %s volumes" % len(vols))
for v in vols:
try:
admin_manager.volumes_client.\
wait_for_volume_status(v['id'], 'available')
waiters.wait_for_volume_status(
admin_manager.volumes_client, v['id'], 'available')
admin_manager.volumes_client.delete_volume(v['id'])
except Exception:
pass

View File

@ -213,8 +213,8 @@ class TestCreateResources(JavelinUnitTest):
name=self.fake_object['name'],
ip_version=fake_version)
def test_create_volumes(self):
@mock.patch("tempest.common.waiters.wait_for_volume_status")
def test_create_volumes(self, mock_wait_for_volume_status):
self.useFixture(mockpatch.PatchObject(javelin, "client_for_user",
return_value=self.fake_client))
self.useFixture(mockpatch.PatchObject(javelin, "_get_volume_by_name",
@ -228,12 +228,12 @@ class TestCreateResources(JavelinUnitTest):
mocked_function.assert_called_once_with(
size=self.fake_object['gb'],
display_name=self.fake_object['name'])
mocked_function = self.fake_client.volumes.wait_for_volume_status
mocked_function.assert_called_once_with(
self.fake_object.body['volume']['id'],
mock_wait_for_volume_status.assert_called_once_with(
self.fake_client.volumes, self.fake_object.body['volume']['id'],
'available')
def test_create_volume_existing(self):
@mock.patch("tempest.common.waiters.wait_for_volume_status")
def test_create_volume_existing(self, mock_wait_for_volume_status):
self.useFixture(mockpatch.PatchObject(javelin, "client_for_user",
return_value=self.fake_client))
self.useFixture(mockpatch.PatchObject(javelin, "_get_volume_by_name",
@ -245,8 +245,7 @@ class TestCreateResources(JavelinUnitTest):
mocked_function = self.fake_client.volumes.create_volume
self.assertFalse(mocked_function.called)
mocked_function = self.fake_client.volumes.wait_for_volume_status
self.assertFalse(mocked_function.called)
self.assertFalse(mock_wait_for_volume_status.called)
def test_create_router(self):