Merge "Clean up compute class resources via addClassResourceCleanup"
diff --git a/patrole_tempest_plugin/tests/api/compute/rbac_base.py b/patrole_tempest_plugin/tests/api/compute/rbac_base.py
index bab193e..6246446 100644
--- a/patrole_tempest_plugin/tests/api/compute/rbac_base.py
+++ b/patrole_tempest_plugin/tests/api/compute/rbac_base.py
@@ -39,25 +39,6 @@
         cls.tenant_usages_client = cls.os_primary.tenant_usages_client
 
     @classmethod
-    def resource_setup(cls):
-        super(BaseV2ComputeRbacTest, cls).resource_setup()
-        cls.flavors = []
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.clear_flavors()
-        super(BaseV2ComputeRbacTest, cls).resource_cleanup()
-
-    @classmethod
-    def clear_flavors(cls):
-        for flavor in cls.flavors:
-            test_utils.call_and_ignore_notfound_exc(
-                cls.flavors_client.delete_flavor, flavor['id'])
-        for flavor in cls.flavors:
-            test_utils.call_and_ignore_notfound_exc(
-                cls.flavors_client.wait_for_resource_deletion, flavor['id'])
-
-    @classmethod
     def create_flavor(cls, **kwargs):
         flavor_kwargs = {
             "name": data_utils.rand_name(cls.__name__ + '-flavor'),
@@ -69,5 +50,9 @@
         if kwargs:
             flavor_kwargs.update(kwargs)
         flavor = cls.flavors_client.create_flavor(**flavor_kwargs)['flavor']
-        cls.flavors.append(flavor)
+        cls.addClassResourceCleanup(
+            cls.flavors_client.wait_for_resource_deletion, flavor['id'])
+        cls.addClassResourceCleanup(
+            test_utils.call_and_ignore_notfound_exc,
+            cls.flavors_client.delete_flavor, flavor['id'])
         return flavor
diff --git a/patrole_tempest_plugin/tests/api/compute/test_flavor_extra_specs_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_flavor_extra_specs_rbac.py
index 031d8ad..1cced71 100644
--- a/patrole_tempest_plugin/tests/api/compute/test_flavor_extra_specs_rbac.py
+++ b/patrole_tempest_plugin/tests/api/compute/test_flavor_extra_specs_rbac.py
@@ -36,12 +36,6 @@
         super(FlavorExtraSpecsRbacTest, cls).resource_setup()
         cls.flavor = cls.create_flavor()
 
-    @classmethod
-    def resource_cleanup(cls):
-        cls.flavors_client.delete_flavor(cls.flavor['id'])
-        cls.flavors_client.wait_for_resource_deletion(cls.flavor['id'])
-        super(FlavorExtraSpecsRbacTest, cls).resource_cleanup()
-
     def _set_flavor_extra_spec(self):
         rand_key = data_utils.rand_name(self.__class__.__name__ + '-key')
         rand_val = data_utils.rand_name(self.__class__.__name__ + '-val')
diff --git a/patrole_tempest_plugin/tests/api/compute/test_images_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_images_rbac.py
index cdabf6f..e315623 100644
--- a/patrole_tempest_plugin/tests/api/compute/test_images_rbac.py
+++ b/patrole_tempest_plugin/tests/api/compute/test_images_rbac.py
@@ -63,11 +63,11 @@
         super(ImagesRbacTest, cls).resource_setup()
         cls.image = cls.glance_image_client.create_image(
             name=data_utils.rand_name(cls.__name__ + '-image'))
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.glance_image_client.delete_image(cls.image['id'])
-        super(ImagesRbacTest, cls).resource_cleanup()
+        cls.addClassResourceCleanup(
+            cls.glance_image_client.wait_for_resource_deletion,
+            cls.image['id'])
+        cls.addClassResourceCleanup(
+            cls.glance_image_client.delete_image, cls.image['id'])
 
     @decorators.idempotent_id('b861f302-b72b-4055-81db-c62ff30b136d')
     @rbac_rule_validation.action(
diff --git a/patrole_tempest_plugin/tests/api/compute/test_quota_class_sets_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_quota_class_sets_rbac.py
index a7d8997..97650ab 100644
--- a/patrole_tempest_plugin/tests/api/compute/test_quota_class_sets_rbac.py
+++ b/patrole_tempest_plugin/tests/api/compute/test_quota_class_sets_rbac.py
@@ -51,12 +51,8 @@
         project_name = data_utils.rand_name(cls.__name__ + '-Project')
         cls.project_id = cls.identity_projects_client.create_project(
             project_name)['project']['id']
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.identity_projects_client.delete_project(
-            cls.project_id)
-        super(QuotaClassesRbacTest, cls).resource_cleanup()
+        cls.addClassResourceCleanup(
+            cls.identity_projects_client.delete_project, cls.project_id)
 
     @decorators.idempotent_id('c10198ed-9df2-440e-a49b-367dadc6de94')
     @rbac_rule_validation.action(