Merge "Use addClassResourceCleanup for cleanup of volume resources"

This commit is contained in:
Zuul 2018-01-31 14:58:12 +00:00 committed by Gerrit Code Review
commit e4976924ff
2 changed files with 24 additions and 74 deletions

View File

@ -101,19 +101,11 @@ class BaseVolumeTest(api_version_utils.BaseMicroversionTest,
cls.min_microversion,
CONF.volume.min_microversion))
cls.snapshots = []
cls.volumes = []
cls.image_ref = CONF.compute.image_ref
cls.flavor_ref = CONF.compute.flavor_ref
cls.build_interval = CONF.volume.build_interval
cls.build_timeout = CONF.volume.build_timeout
@classmethod
def resource_cleanup(cls):
cls.clear_snapshots()
cls.clear_volumes()
super(BaseVolumeTest, cls).resource_cleanup()
@classmethod
def create_volume(cls, wait_until='available', **kwargs):
"""Wrapper utility that returns a test volume.
@ -133,7 +125,9 @@ class BaseVolumeTest(api_version_utils.BaseMicroversionTest,
kwargs['name'] = name
volume = cls.volumes_client.create_volume(**kwargs)['volume']
cls.volumes.append(volume)
cls.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,
cls.delete_volume, cls.volumes_client,
volume['id'])
waiters.wait_for_volume_resource_status(cls.volumes_client,
volume['id'], wait_until)
return volume
@ -147,7 +141,8 @@ class BaseVolumeTest(api_version_utils.BaseMicroversionTest,
snapshot = cls.snapshots_client.create_snapshot(
volume_id=volume_id, **kwargs)['snapshot']
cls.snapshots.append(snapshot['id'])
cls.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,
cls.delete_snapshot, snapshot['id'])
waiters.wait_for_volume_resource_status(cls.snapshots_client,
snapshot['id'], 'available')
return snapshot
@ -176,14 +171,13 @@ class BaseVolumeTest(api_version_utils.BaseMicroversionTest,
client.delete_volume(volume_id)
client.wait_for_resource_deletion(volume_id)
def delete_snapshot(self, snapshot_id, snapshots_client=None):
@classmethod
def delete_snapshot(cls, snapshot_id, snapshots_client=None):
"""Delete snapshot by the given client"""
if snapshots_client is None:
snapshots_client = self.snapshots_client
snapshots_client = cls.snapshots_client
snapshots_client.delete_snapshot(snapshot_id)
snapshots_client.wait_for_resource_deletion(snapshot_id)
if snapshot_id in self.snapshots:
self.snapshots.remove(snapshot_id)
def attach_volume(self, server_id, volume_id):
"""Attach a volume to a server"""
@ -197,31 +191,6 @@ class BaseVolumeTest(api_version_utils.BaseMicroversionTest,
self.addCleanup(self.servers_client.detach_volume, server_id,
volume_id)
@classmethod
def clear_volumes(cls):
for volume in cls.volumes:
try:
cls.volumes_client.delete_volume(volume['id'])
except Exception:
pass
for volume in cls.volumes:
try:
cls.volumes_client.wait_for_resource_deletion(volume['id'])
except Exception:
pass
@classmethod
def clear_snapshots(cls):
for snapshot in cls.snapshots:
test_utils.call_and_ignore_notfound_exc(
cls.snapshots_client.delete_snapshot, snapshot)
for snapshot in cls.snapshots:
test_utils.call_and_ignore_notfound_exc(
cls.snapshots_client.wait_for_resource_deletion,
snapshot)
def create_server(self, wait_until='ACTIVE', **kwargs):
name = kwargs.pop(
'name',
@ -302,19 +271,6 @@ class BaseVolumeAdminTest(BaseVolumeTest):
cls.admin_scheduler_stats_client = \
cls.os_admin.volume_scheduler_stats_v2_client
@classmethod
def resource_setup(cls):
super(BaseVolumeAdminTest, cls).resource_setup()
cls.qos_specs = []
cls.volume_types = []
@classmethod
def resource_cleanup(cls):
cls.clear_qos_specs()
super(BaseVolumeAdminTest, cls).resource_cleanup()
cls.clear_volume_types()
@classmethod
def create_test_qos_specs(cls, name=None, consumer=None, **kwargs):
"""create a test Qos-Specs."""
@ -322,7 +278,7 @@ class BaseVolumeAdminTest(BaseVolumeTest):
consumer = consumer or 'front-end'
qos_specs = cls.admin_volume_qos_client.create_qos(
name=name, consumer=consumer, **kwargs)['qos_specs']
cls.qos_specs.append(qos_specs['id'])
cls.addClassResourceCleanup(cls.clear_qos_spec, qos_specs['id'])
return qos_specs
@classmethod
@ -331,7 +287,7 @@ class BaseVolumeAdminTest(BaseVolumeTest):
name = name or data_utils.rand_name(cls.__name__ + '-volume-type')
volume_type = cls.admin_volume_types_client.create_volume_type(
name=name, **kwargs)['volume_type']
cls.volume_types.append(volume_type['id'])
cls.addClassResourceCleanup(cls.clear_volume_type, volume_type['id'])
return volume_type
def create_group_type(self, name=None, **kwargs):
@ -345,22 +301,18 @@ class BaseVolumeAdminTest(BaseVolumeTest):
return group_type
@classmethod
def clear_qos_specs(cls):
for qos_id in cls.qos_specs:
test_utils.call_and_ignore_notfound_exc(
cls.admin_volume_qos_client.delete_qos, qos_id)
def clear_qos_spec(cls, qos_id):
test_utils.call_and_ignore_notfound_exc(
cls.admin_volume_qos_client.delete_qos, qos_id)
for qos_id in cls.qos_specs:
test_utils.call_and_ignore_notfound_exc(
cls.admin_volume_qos_client.wait_for_resource_deletion, qos_id)
test_utils.call_and_ignore_notfound_exc(
cls.admin_volume_qos_client.wait_for_resource_deletion, qos_id)
@classmethod
def clear_volume_types(cls):
for vol_type in cls.volume_types:
test_utils.call_and_ignore_notfound_exc(
cls.admin_volume_types_client.delete_volume_type, vol_type)
def clear_volume_type(cls, vol_type_id):
test_utils.call_and_ignore_notfound_exc(
cls.admin_volume_types_client.delete_volume_type, vol_type_id)
for vol_type in cls.volume_types:
test_utils.call_and_ignore_notfound_exc(
cls.admin_volume_types_client.wait_for_resource_deletion,
vol_type)
test_utils.call_and_ignore_notfound_exc(
cls.admin_volume_types_client.wait_for_resource_deletion,
vol_type_id)

View File

@ -40,7 +40,7 @@ class VolumesBackupsTest(base.BaseVolumeTest):
backup_id)['restore']
# Delete backup
self.addCleanup(self.volumes_client.delete_volume,
self.addCleanup(self.delete_volume, self.volumes_client,
restored_volume['volume_id'])
self.assertEqual(backup_id, restored_volume['backup_id'])
waiters.wait_for_volume_resource_status(self.backups_client,
@ -59,8 +59,7 @@ class VolumesBackupsTest(base.BaseVolumeTest):
"vol-meta2": "value2",
"vol-meta3": "value3"}
volume = self.create_volume(metadata=metadata)
self.addCleanup(self.volumes_client.delete_volume,
volume['id'])
self.addCleanup(self.delete_volume, self.volumes_client, volume['id'])
# Create a backup
backup_name = data_utils.rand_name(
@ -109,8 +108,7 @@ class VolumesBackupsTest(base.BaseVolumeTest):
"""
# Create a server
volume = self.create_volume()
self.addCleanup(self.volumes_client.delete_volume,
volume['id'])
self.addCleanup(self.delete_volume, self.volumes_client, volume['id'])
server = self.create_server()
# Attach volume to instance
self.attach_volume(server['id'], volume['id'])