Merge "Ensure all image cache volumes are removed before removing the volume type"

This commit is contained in:
Zuul 2019-04-15 11:03:39 +00:00 committed by Gerrit Code Review
commit fab49c44f8
1 changed files with 20 additions and 1 deletions

View File

@ -324,6 +324,25 @@ class ScenarioTest(tempest.test.BaseTestCase):
snapshot['id'])['snapshot']
return snapshot
def _cleanup_volume_type(self, volume_type):
"""Clean up a given volume type.
Ensuring all volumes associated to a type are first removed before
attempting to remove the type itself. This includes any image volume
cache volumes stored in a separate tenant to the original volumes
created from the type.
"""
admin_volume_type_client = self.os_admin.volume_types_client_latest
admin_volumes_client = self.os_admin.volumes_client_latest
volumes = admin_volumes_client.list_volumes(
detail=True, params={'all_tenants': 1})['volumes']
type_name = volume_type['name']
for volume in [v for v in volumes if v['volume_type'] == type_name]:
test_utils.call_and_ignore_notfound_exc(
admin_volumes_client.delete_volume, volume['id'])
admin_volumes_client.wait_for_resource_deletion(volume['id'])
admin_volume_type_client.delete_volume_type(volume_type['id'])
def create_volume_type(self, client=None, name=None, backend_name=None):
if not client:
client = self.os_admin.volume_types_client_latest
@ -338,7 +357,7 @@ class ScenarioTest(tempest.test.BaseTestCase):
volume_type = client.create_volume_type(
name=randomized_name, extra_specs=extra_specs)['volume_type']
self.addCleanup(client.delete_volume_type, volume_type['id'])
self.addCleanup(self._cleanup_volume_type, volume_type)
return volume_type
def _create_loginable_secgroup_rule(self, secgroup_id=None):