Merge "Add volume dependency test coverage"
diff --git a/.zuul.yaml b/.zuul.yaml
index be6d789..2b6b59c 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -25,9 +25,9 @@
         # branches. That is what we need to do for all tempest plugins. Only jobs
         # for the current releasable ("Maintained") stable branches should be listed
         # here.
+        - cinder-tempest-plugin-basic-2023-2
         - cinder-tempest-plugin-basic-2023-1
         - cinder-tempest-plugin-basic-zed
-        - cinder-tempest-plugin-basic-yoga
         - cinder-tempest-plugin-protection-functional
     gate:
       jobs:
@@ -38,9 +38,9 @@
         - cinder-tempest-plugin-cbak-ceph
     experimental:
       jobs:
+        - cinder-tempest-plugin-cbak-ceph-2023-2
         - cinder-tempest-plugin-cbak-ceph-2023-1
         - cinder-tempest-plugin-cbak-ceph-zed
-        - cinder-tempest-plugin-cbak-ceph-yoga
 
 - job:
     name: cinder-tempest-plugin-protection-functional
@@ -51,10 +51,13 @@
     vars:
       tox_envlist: all
       tempest_test_regex: 'cinder_tempest_plugin.rbac'
+      devstack_localrc:
+        KEYSTONE_ENFORCE_SCOPE: True
       devstack_local_conf:
         test-config:
           $CINDER_CONF:
             oslo_policy:
+              enforce_scope: True
               enforce_new_defaults: True
           $TEMPEST_CONFIG:
             enforce_scope:
@@ -266,6 +269,12 @@
     timeout: 10800
 
 - job:
+    name: cinder-tempest-plugin-cbak-ceph-2023-2
+    parent: cinder-tempest-plugin-cbak-ceph
+    nodeset: openstack-single-node-jammy
+    override-checkout: stable/2023.2
+
+- job:
     name: cinder-tempest-plugin-cbak-ceph-2023-1
     parent: cinder-tempest-plugin-cbak-ceph
     nodeset: openstack-single-node-jammy
@@ -277,12 +286,6 @@
     nodeset: openstack-single-node-focal
     override-checkout: stable/zed
 
-- job:
-    name: cinder-tempest-plugin-cbak-ceph-yoga
-    parent: cinder-tempest-plugin-cbak-ceph
-    nodeset: openstack-single-node-focal
-    override-checkout: stable/yoga
-
 # variant for pre-Ussuri branches (no volume revert for Ceph),
 # should this job be used on those branches
 - job:
@@ -413,6 +416,12 @@
       - ^releasenotes/.*$
 
 - job:
+    name: cinder-tempest-plugin-basic-2023-2
+    parent: cinder-tempest-plugin-basic
+    nodeset: openstack-single-node-jammy
+    override-checkout: stable/2023.2
+
+- job:
     name: cinder-tempest-plugin-basic-2023-1
     parent: cinder-tempest-plugin-basic
     nodeset: openstack-single-node-jammy
@@ -423,9 +432,3 @@
     parent: cinder-tempest-plugin-basic
     nodeset: openstack-single-node-focal
     override-checkout: stable/zed
-
-- job:
-    name: cinder-tempest-plugin-basic-yoga
-    parent: cinder-tempest-plugin-basic
-    nodeset: openstack-single-node-focal
-    override-checkout: stable/yoga
diff --git a/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py b/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py
index 7dff494..42c78f1 100644
--- a/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py
+++ b/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py
@@ -28,9 +28,7 @@
 class ConsistencyGroupsV2Test(base.BaseVolumeAdminTest):
     @classmethod
     def setup_clients(cls):
-        cls._api_version = 2
         super(ConsistencyGroupsV2Test, cls).setup_clients()
-        cls.admin_volume_client = cls.os_admin.volumes_v2_client
 
         manager = cinder_clients.Manager(cls.os_admin)
         cls.consistencygroups_adm_client = manager.consistencygroups_adm_client
diff --git a/cinder_tempest_plugin/api/volume/admin/test_volume_backup.py b/cinder_tempest_plugin/api/volume/admin/test_volume_backup.py
index e5ded52..41cfc91 100644
--- a/cinder_tempest_plugin/api/volume/admin/test_volume_backup.py
+++ b/cinder_tempest_plugin/api/volume/admin/test_volume_backup.py
@@ -24,13 +24,6 @@
 
 class VolumesBackupsTest(base.BaseVolumeAdminTest):
     @classmethod
-    def setup_clients(cls):
-        super(VolumesBackupsTest, cls).setup_clients()
-        cls.admin_volume_client = cls.os_admin.volumes_client_latest
-        cls.backups_client = cls.os_primary.backups_client_latest
-        cls.volumes_client = cls.os_primary.volumes_client_latest
-
-    @classmethod
     def skip_checks(cls):
         super(VolumesBackupsTest, cls).skip_checks()
         if not CONF.volume_feature_enabled.backup:
diff --git a/cinder_tempest_plugin/api/volume/base.py b/cinder_tempest_plugin/api/volume/base.py
index ea6bd2e..1fd82bf 100644
--- a/cinder_tempest_plugin/api/volume/base.py
+++ b/cinder_tempest_plugin/api/volume/base.py
@@ -16,7 +16,6 @@
 from tempest.common import compute
 from tempest.common import waiters
 from tempest import config
-from tempest.lib.common import api_microversion_fixture
 from tempest.lib.common import api_version_utils
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
@@ -57,8 +56,6 @@
 
     def setUp(self):
         super(BaseVolumeTest, self).setUp()
-        self.useFixture(api_microversion_fixture.APIMicroversionFixture(
-            volume_microversion=self.request_microversion))
 
     @classmethod
     def resource_setup(cls):
@@ -67,6 +64,8 @@
             api_version_utils.select_request_microversion(
                 cls.min_microversion,
                 CONF.volume.min_microversion))
+        cls.setup_api_microversion_fixture(
+            volume_microversion=cls.request_microversion)
 
     @classmethod
     def create_volume(cls, wait_until='available', **kwargs):
@@ -171,7 +170,7 @@
 
         cls.admin_volume_types_client = cls.os_admin.volume_types_client_latest
         cls.admin_backups_client = cls.os_admin.backups_client_latest
-        cls.admin_volumes_client = cls.os_admin.volumes_client_latest
+        cls.admin_volume_client = cls.os_admin.volumes_client_latest
 
     @classmethod
     def create_volume_type(cls, name=None, **kwargs):
@@ -194,12 +193,12 @@
         type_id = volume_type['id']
         type_name = volume_type['name']
 
-        volumes = cls.admin_volumes_client.list_volumes(
+        volumes = cls.admin_volume_client.list_volumes(
             detail=True, params={'all_tenants': 1})['volumes']
         for volume in [v for v in volumes if v['volume_type'] == type_name]:
             test_utils.call_and_ignore_notfound_exc(
-                cls.admin_volumes_client.delete_volume, volume['id'])
-            cls.admin_volumes_client.wait_for_resource_deletion(volume['id'])
+                cls.admin_volume_client.delete_volume, volume['id'])
+            cls.admin_volume_client.wait_for_resource_deletion(volume['id'])
 
         test_utils.call_and_ignore_notfound_exc(
             cls.admin_volume_types_client.delete_volume_type, type_id)
diff --git a/cinder_tempest_plugin/api/volume/test_volume_revert.py b/cinder_tempest_plugin/api/volume/test_volume_revert.py
index bf3d806..2c4d6bd 100644
--- a/cinder_tempest_plugin/api/volume/test_volume_revert.py
+++ b/cinder_tempest_plugin/api/volume/test_volume_revert.py
@@ -35,7 +35,6 @@
 
     @classmethod
     def setup_clients(cls):
-        cls._api_version = 3
         super(VolumeRevertTests, cls).setup_clients()
 
         manager = cinder_clients.Manager(cls.os_primary)
diff --git a/cinder_tempest_plugin/rbac/v3/base.py b/cinder_tempest_plugin/rbac/v3/base.py
index af724a3..6fc6be5 100644
--- a/cinder_tempest_plugin/rbac/v3/base.py
+++ b/cinder_tempest_plugin/rbac/v3/base.py
@@ -13,7 +13,6 @@
 
 from tempest.common import waiters
 from tempest import config
-from tempest.lib.common import api_microversion_fixture
 from tempest.lib.common import api_version_utils
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
@@ -51,8 +50,6 @@
 
     def setUp(self):
         super(VolumeV3RbacBaseTests, self).setUp()
-        self.useFixture(api_microversion_fixture.APIMicroversionFixture(
-            volume_microversion=self.request_microversion))
 
     @classmethod
     def resource_setup(cls):
@@ -61,6 +58,8 @@
             api_version_utils.select_request_microversion(
                 cls.min_microversion,
                 CONF.volume.min_microversion))
+        cls.setup_api_microversion_fixture(
+            volume_microversion=cls.request_microversion)
 
     def do_request(self, method, expected_status=200, client=None, **payload):
         """Perform API call