diff --git a/.zuul.yaml b/.zuul.yaml
index 94b8669..387c042 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -33,39 +33,38 @@
 - job:
     name: patrole-admin
     parent: patrole-base
-    run: playbooks/legacy/patrole-admin/run.yaml
-    post-run: playbooks/legacy/patrole-admin/post.yaml
+    run: playbooks/patrole-admin/run.yaml
+    post-run: playbooks/patrole-admin/post.yaml
 
 - job:
     name: patrole-member
     parent: patrole-base
-    run: playbooks/legacy/patrole-member/run.yaml
-    post-run: playbooks/legacy/patrole-member/post.yaml
+    run: playbooks/patrole-member/run.yaml
+    post-run: playbooks/patrole-member/post.yaml
 
 - job:
     name: patrole-multinode-admin
     parent: patrole-base-multinode
-    run: playbooks/legacy/patrole-multinode-admin/run.yaml
-    post-run: playbooks/legacy/patrole-multinode-admin/post.yaml
+    run: playbooks/patrole-multinode-admin/run.yaml
+    post-run: playbooks/patrole-multinode-admin/post.yaml
     voting: false
     nodeset: legacy-ubuntu-xenial-2-node
 
 - job:
     name: patrole-multinode-member
     parent: patrole-base-multinode
-    run: playbooks/legacy/patrole-multinode-member/run.yaml
-    post-run: playbooks/legacy/patrole-multinode-member/post.yaml
+    run: playbooks/patrole-multinode-member/run.yaml
+    post-run: playbooks/patrole-multinode-member/post.yaml
     voting: false
     nodeset: legacy-ubuntu-xenial-2-node
 
 - job:
     name: patrole-py35-member
     parent: patrole-base
-    run: playbooks/legacy/patrole-py35-member/run.yaml
-    post-run: playbooks/legacy/patrole-py35-member/post.yaml
+    run: playbooks/patrole-py35-member/run.yaml
+    post-run: playbooks/patrole-py35-member/post.yaml
 
 - project:
-    name: openstack/patrole
     check:
       jobs:
         - patrole-admin
diff --git a/patrole_tempest_plugin/policy_authority.py b/patrole_tempest_plugin/policy_authority.py
index 3f4236b..6851942 100644
--- a/patrole_tempest_plugin/policy_authority.py
+++ b/patrole_tempest_plugin/policy_authority.py
@@ -292,8 +292,9 @@
 
     def _try_rule(self, apply_rule, target, access_data, o):
         if apply_rule not in self.rules:
-            message = "Policy action: {0} not found in policy file: {1}."\
-                      .format(apply_rule, self.path)
+            message = ("Policy action \"{0}\" not found in policy file: {1} or"
+                       " among registered policy in code defaults for service."
+                       ).format(apply_rule, self.path)
             LOG.debug(message)
             raise rbac_exceptions.RbacParsingException(message)
         else:
diff --git a/patrole_tempest_plugin/rbac_rule_validation.py b/patrole_tempest_plugin/rbac_rule_validation.py
index 75d1baa..daf03e4 100644
--- a/patrole_tempest_plugin/rbac_rule_validation.py
+++ b/patrole_tempest_plugin/rbac_rule_validation.py
@@ -175,10 +175,6 @@
                         "OverPermission: Role %s was allowed to perform %s" %
                         (role, rule))
             finally:
-                # TODO(felipemonteiro): Remove the call below once all the
-                # tests have migrated over to `override_role` public method.
-                test_obj.rbac_utils._override_role(test_obj,
-                                                   toggle_rbac_role=False)
                 if CONF.patrole_log.enable_reporting:
                     RBACLOG.info(
                         "[Service]: %s, [Test]: %s, [Rule]: %s, "
diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_rbac.py
index b95ebd5..a9d746c 100644
--- a/patrole_tempest_plugin/tests/api/compute/test_server_rbac.py
+++ b/patrole_tempest_plugin/tests/api/compute/test_server_rbac.py
@@ -51,7 +51,13 @@
     @decorators.idempotent_id('4f34c73a-6ddc-4677-976f-71320fa855bd')
     def test_create_server(self):
         with self.rbac_utils.override_role(self):
-            self.create_test_server(wait_until='ACTIVE')
+            server = self.servers_client.create_server(
+                name=data_utils.rand_name(self.__class__.__name__ + '-Server'),
+                flavorRef=CONF.compute.flavor_ref,
+                imageRef=CONF.compute.image_ref)['server']
+        self.addCleanup(waiters.wait_for_server_termination,
+                        self.servers_client, server['id'])
+        self.addCleanup(self.servers_client.delete_server, server['id'])
 
     @rbac_rule_validation.action(
         service="nova",
@@ -70,8 +76,14 @@
         availability_zone = 'nova:' + host
 
         with self.rbac_utils.override_role(self):
-            self.create_test_server(wait_until='ACTIVE',
-                                    availability_zone=availability_zone)
+            server = self.servers_client.create_server(
+                name=data_utils.rand_name(self.__class__.__name__ + '-Server'),
+                flavorRef=CONF.compute.flavor_ref,
+                imageRef=CONF.compute.image_ref,
+                availability_zone=availability_zone)['server']
+        self.addCleanup(waiters.wait_for_server_termination,
+                        self.servers_client, server['id'])
+        self.addCleanup(self.servers_client.delete_server, server['id'])
 
     @utils.services('volume')
     @rbac_rule_validation.action(
@@ -86,7 +98,6 @@
             imageRef=CONF.compute.image_ref,
             size=CONF.volume.volume_size)['id']
 
-        server_name = data_utils.rand_name(self.__class__.__name__ + "-server")
         bd_map_v2 = [{'uuid': volume_id,
                       'source_type': 'volume',
                       'destination_type': 'volume',
@@ -96,8 +107,11 @@
 
         with self.rbac_utils.override_role(self):
             # Use image_id='' to avoid using the default image in tempest.conf.
-            server = self.create_test_server(name=server_name, image_id='',
-                                             **device_mapping)
+            server = self.servers_client.create_server(
+                name=data_utils.rand_name(self.__class__.__name__ + '-Server'),
+                flavorRef=CONF.compute.flavor_ref,
+                imageRef='',
+                **device_mapping)['server']
         # Delete the server and wait for the volume to become available to
         # avoid clean up errors.
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -138,8 +152,11 @@
         network_id = {'uuid': network['id']}
 
         with self.rbac_utils.override_role(self):
-            server = self.create_test_server(wait_until='ACTIVE',
-                                             networks=[network_id])
+            server = self.servers_client.create_server(
+                name=data_utils.rand_name(self.__class__.__name__ + '-Server'),
+                flavorRef=CONF.compute.flavor_ref,
+                imageRef=CONF.compute.image_ref,
+                networks=[network_id])['server']
         self.addCleanup(waiters.wait_for_server_termination,
                         self.servers_client, server['id'])
         self.addCleanup(self.servers_client.delete_server, server['id'])
diff --git a/patrole_tempest_plugin/tests/api/volume/test_groups_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_groups_rbac.py
index c9ecdae..ecd193b 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_groups_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_groups_rbac.py
@@ -171,6 +171,31 @@
         with self.rbac_utils.override_role(self):
             self.create_group_type(ignore_notfound=True)
 
+    @decorators.idempotent_id('f77f8156-4fc9-4f02-be15-8930f748e10c')
+    @rbac_rule_validation.action(
+        service="cinder",
+        rule="group:group_types_manage")
+    def test_delete_group_type(self):
+        group_type = self.create_group_type(ignore_notfound=True)
+
+        with self.rbac_utils.override_role(self):
+            self.group_types_client.delete_group_type(group_type['id'])
+
+    @decorators.idempotent_id('67929954-4551-4d22-b15a-27fb6e56b711')
+    @rbac_rule_validation.action(
+        service="cinder",
+        rule="group:group_types_manage")
+    def test_update_group_type(self):
+        group_type = self.create_group_type()
+        update_params = {
+            'name': data_utils.rand_name(
+                self.__class__.__name__ + '-updated-group-type'),
+            'description': 'updated-group-type-desc'
+        }
+        with self.rbac_utils.override_role(self):
+            self.group_types_client.update_group_type(
+                group_type['id'], **update_params)
+
     @decorators.idempotent_id('a5f88c26-df7c-4f21-a3ae-7a4c2d6212b4')
     @rbac_rule_validation.action(
         service="cinder",
@@ -186,16 +211,6 @@
             raise rbac_exceptions.RbacMalformedResponse(
                 attribute='group_specs')
 
-    @decorators.idempotent_id('f77f8156-4fc9-4f02-be15-8930f748e10c')
-    @rbac_rule_validation.action(
-        service="cinder",
-        rule="group:group_types_manage")
-    def test_delete_group_type(self):
-        group_type = self.create_group_type(ignore_notfound=True)
-
-        with self.rbac_utils.override_role(self):
-            self.group_types_client.delete_group_type(group_type['id'])
-
     @decorators.idempotent_id('8d9e2831-24c3-47b7-a76a-2e563287f12f')
     @rbac_rule_validation.action(
         service="cinder",
diff --git a/patrole_tempest_plugin/tests/api/volume/test_snapshot_manage_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_snapshot_manage_rbac.py
index c71a1e1..d238045 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_snapshot_manage_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_snapshot_manage_rbac.py
@@ -13,6 +13,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from tempest.common import waiters
 from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
@@ -54,21 +55,20 @@
     def test_manage_snapshot_rbac(self):
         name = data_utils.rand_name(self.__class__.__name__ +
                                     '-Managed-Snapshot')
-        description = data_utils.rand_name(self.__class__.__name__ +
-                                           '-Managed-Snapshot-Description')
-        metadata = {"manage-snap-meta1": "value1",
-                    "manage-snap-meta2": "value2",
-                    "manage-snap-meta3": "value3"}
         snapshot_ref = {
             'volume_id': self.volume['id'],
             'ref': {CONF.volume.manage_snapshot_ref[0]:
                     CONF.volume.manage_snapshot_ref[1] % self.snapshot['id']},
-            'name': name,
-            'description': description,
-            'metadata': metadata
+            'name': name
         }
         with self.rbac_utils.override_role(self):
-            self.snapshot_manage_client.manage_snapshot(**snapshot_ref)
+            snapshot = self.snapshot_manage_client.manage_snapshot(
+                **snapshot_ref)['snapshot']
+        self.addCleanup(self.delete_snapshot, snapshot['id'],
+                        self.snapshots_client)
+        waiters.wait_for_volume_resource_status(self.snapshots_client,
+                                                snapshot['id'],
+                                                'available')
 
     @decorators.idempotent_id('4a2e8934-9c0b-434e-8f0b-e18b9aff126f')
     @rbac_rule_validation.action(
diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_actions_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_actions_rbac.py
index e9ebb99..a755d48 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_volume_actions_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_volume_actions_rbac.py
@@ -28,13 +28,11 @@
 
 
 class VolumesActionsV3RbacTest(rbac_base.BaseVolumeRbacTest):
-    credentials = ['primary', 'admin']
 
     @classmethod
     def setup_clients(cls):
         super(VolumesActionsV3RbacTest, cls).setup_clients()
-        cls.admin_image_client = cls.os_admin.image_client_v2
-        cls.admin_volumes_client = cls.os_admin.volumes_client_latest
+        cls.image_client = cls.os_primary.image_client_v2
 
     @classmethod
     def resource_setup(cls):
@@ -56,7 +54,7 @@
             server['id'], volumeId=volume_id,
             device='/dev/%s' % CONF.compute.volume_device_name)
         waiters.wait_for_volume_resource_status(
-            self.admin_volumes_client, volume_id, 'in-use')
+            self.volumes_client, volume_id, 'in-use')
         self.addCleanup(self._detach_volume, volume_id)
 
     def _detach_volume(self, volume_id=None):
@@ -65,7 +63,7 @@
 
         self.volumes_client.detach_volume(volume_id)
         waiters.wait_for_volume_resource_status(
-            self.admin_volumes_client, volume_id, 'available')
+            self.volumes_client, volume_id, 'available')
 
     @utils.services('compute')
     @rbac_rule_validation.action(
@@ -74,8 +72,15 @@
     @decorators.idempotent_id('f97b10e4-2eed-4f8b-8632-71c02cb9fe42')
     def test_attach_volume_to_instance(self):
         server = self._create_server()
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._attach_volume(server)
+        volume_id = self.volume['id']
+
+        with self.rbac_utils.override_role(self):
+            self.servers_client.attach_volume(
+                server['id'], volumeId=volume_id,
+                device='/dev/%s' % CONF.compute.volume_device_name)
+        waiters.wait_for_volume_resource_status(
+            self.volumes_client, volume_id, 'in-use')
+        self.addCleanup(self._detach_volume, volume_id)
 
     @utils.services('compute')
     @decorators.attr(type='slow')
@@ -86,9 +91,12 @@
     def test_detach_volume_from_instance(self):
         server = self._create_server()
         self._attach_volume(server)
+        volume_id = self.volume['id']
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._detach_volume()
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.detach_volume(volume_id)
+        waiters.wait_for_volume_resource_status(
+            self.volumes_client, volume_id, 'available')
 
     @decorators.attr(type=["slow"])
     @utils.services('image')
@@ -102,26 +110,26 @@
         # Cinder's policy.json.
         image_name = data_utils.rand_name(self.__class__.__name__ + '-Image')
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        body = self.volumes_client.upload_volume(
-            self.volume['id'], image_name=image_name, visibility="private",
-            disk_format=CONF.volume.disk_format)['os-volume_upload_image']
+        with self.rbac_utils.override_role(self):
+            body = self.volumes_client.upload_volume(
+                self.volume['id'], image_name=image_name, visibility="private",
+                disk_format=CONF.volume.disk_format)['os-volume_upload_image']
         image_id = body["image_id"]
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
-                        self.admin_image_client.delete_image,
+                        self.image_client.delete_image,
                         image_id)
-        waiters.wait_for_image_status(self.admin_image_client, image_id,
+        waiters.wait_for_image_status(self.image_client, image_id,
                                       'active')
-        waiters.wait_for_volume_resource_status(self.admin_volumes_client,
+        waiters.wait_for_volume_resource_status(self.volumes_client,
                                                 self.volume['id'], 'available')
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:update_readonly_flag")
     @decorators.idempotent_id('2750717a-f250-4e41-9e09-02624aad6ff8')
     def test_volume_readonly_update(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.update_volume_readonly(self.volume['id'],
-                                                   readonly=True)
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.update_volume_readonly(self.volume['id'],
+                                                       readonly=True)
         self.addCleanup(self.volumes_client.update_volume_readonly,
                         self.volume['id'], readonly=False)
 
@@ -132,32 +140,32 @@
     def test_unmanage_volume(self):
         volume = self.create_volume()
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.unmanage_volume(volume['id'])
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.unmanage_volume(volume['id'])
 
     @decorators.idempotent_id('59b783c0-f4ef-430c-8a90-1bad97d4ec5c')
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:update")
     def test_volume_set_bootable(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.set_bootable_volume(self.volume['id'],
-                                                bootable=True)
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.set_bootable_volume(self.volume['id'],
+                                                    bootable=True)
 
     @decorators.idempotent_id('41566922-75a1-4484-99c7-9c8782ee99ac')
     @rbac_rule_validation.action(
         service="cinder",
         rule="volume_extension:volume_actions:reserve")
     def test_volume_reserve(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.reserve_volume(self.volume['id'])
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.reserve_volume(self.volume['id'])
 
     @decorators.idempotent_id('e5fa9564-77d9-4e57-b0c0-3e0ae4d08535')
     @rbac_rule_validation.action(
         service="cinder",
         rule="volume_extension:volume_actions:unreserve")
     def test_volume_unreserve(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.unreserve_volume(self.volume['id'])
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.unreserve_volume(self.volume['id'])
 
     @decorators.idempotent_id('c015c82f-7010-48cc-bd71-4ef542046f20')
     @rbac_rule_validation.action(service="cinder",
@@ -166,10 +174,10 @@
         vol_type = self.create_volume_type()['name']
         volume = self.create_volume()
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.retype_volume(volume['id'], new_type=vol_type)
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.retype_volume(volume['id'], new_type=vol_type)
         waiters.wait_for_volume_retype(
-            self.admin_volumes_client, volume['id'], vol_type)
+            self.volumes_client, volume['id'], vol_type)
 
     @rbac_rule_validation.action(
         service="cinder",
@@ -178,8 +186,9 @@
     def test_volume_reset_status(self):
         volume = self.create_volume()
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.reset_volume_status(volume['id'], status='error')
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.reset_volume_status(
+                volume['id'], status='error')
 
     @rbac_rule_validation.action(
         service="cinder",
@@ -189,8 +198,8 @@
         volume = self.create_volume()
         self.volumes_client.reset_volume_status(volume['id'], status='error')
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.force_delete_volume(volume['id'])
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.force_delete_volume(volume['id'])
         self.volumes_client.wait_for_resource_deletion(volume['id'])
 
     @decorators.idempotent_id('48bd302b-950a-4830-840c-3158246ecdcc')
@@ -208,11 +217,11 @@
         # Reset volume's status to error.
         self.volumes_client.reset_volume_status(volume['id'], status='error')
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.force_detach_volume(
-            volume['id'], connector=None,
-            attachment_id=attachment['attachment_id'])
-        waiters.wait_for_volume_resource_status(self.admin_volumes_client,
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.force_detach_volume(
+                volume['id'], connector=None,
+                attachment_id=attachment['attachment_id'])
+        waiters.wait_for_volume_resource_status(self.volumes_client,
                                                 volume['id'], 'available')
 
 
@@ -221,13 +230,10 @@
     min_microversion = '3.10'
     max_microversion = 'latest'
 
-    credentials = ['primary', 'admin']
-
     @classmethod
     def setup_clients(cls):
         super(VolumesActionsV310RbacTest, cls).setup_clients()
-        cls.admin_image_client = cls.os_admin.image_client_v2
-        cls.admin_volumes_client = cls.os_admin.volumes_client_latest
+        cls.image_client = cls.os_primary.image_client_v2
 
     @decorators.attr(type=["slow"])
     @utils.services('image')
@@ -240,17 +246,17 @@
         volume = self.create_volume()
         image_name = data_utils.rand_name(self.__class__.__name__ + '-Image')
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        body = self.volumes_client.upload_volume(
-            volume['id'], image_name=image_name, visibility="public",
-            disk_format=CONF.volume.disk_format)['os-volume_upload_image']
-        image_id = body["image_id"]
+        with self.rbac_utils.override_role(self):
+            body = self.volumes_client.upload_volume(
+                volume['id'], image_name=image_name, visibility="public",
+                disk_format=CONF.volume.disk_format)['os-volume_upload_image']
+            image_id = body["image_id"]
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
-                        self.admin_image_client.delete_image,
+                        self.image_client.delete_image,
                         image_id)
-        waiters.wait_for_image_status(self.admin_image_client, image_id,
+        waiters.wait_for_image_status(self.image_client, image_id,
                                       'active')
-        waiters.wait_for_volume_resource_status(self.admin_volumes_client,
+        waiters.wait_for_volume_resource_status(self.volumes_client,
                                                 volume['id'], 'available')
 
 
@@ -262,5 +268,5 @@
     @decorators.idempotent_id('a654833d-4811-4acd-93ef-5ac4a34c75bc')
     @rbac_rule_validation.action(service="cinder", rule="volume:get_all")
     def test_show_volume_summary(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.show_volume_summary()['volume-summary']
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.show_volume_summary()
diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_basic_crud_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_basic_crud_rbac.py
index 244f333..1bd87d2 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_volume_basic_crud_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_volume_basic_crud_rbac.py
@@ -31,42 +31,42 @@
                                  rule="volume:create")
     @decorators.idempotent_id('426b08ef-6394-4d06-9128-965d5a6c38ef')
     def test_create_volume(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.create_volume()
+        with self.rbac_utils.override_role(self):
+            self.create_volume()
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:delete")
     @decorators.idempotent_id('6de9f9c2-509f-4558-867b-af21c7163be4')
     def test_delete_volume(self):
         volume = self.create_volume()
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.delete_volume(volume['id'])
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.delete_volume(volume['id'])
 
     @rbac_rule_validation.action(service="cinder", rule="volume:get")
     @decorators.idempotent_id('c4c3fdd5-b1b1-49c3-b977-a9f40ee9257a')
     def test_get_volume(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.show_volume(self.volume['id'])
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.show_volume(self.volume['id'])
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:get_all")
     @decorators.idempotent_id('e3ab7906-b04b-4c45-aa11-1104d302f940')
     def test_volume_list(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.list_volumes()
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.list_volumes()
 
     @rbac_rule_validation.action(service="cinder", rule="volume:update")
     @decorators.idempotent_id('b751b889-9a9b-40d8-ae7d-4b0f65e71ac7')
     def test_update_volume(self):
         update_name = data_utils.rand_name(self.__class__.__name__ + 'volume')
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.update_volume(self.volume['id'],
-                                          name=update_name)
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.update_volume(self.volume['id'],
+                                              name=update_name)
 
     @rbac_rule_validation.action(
         service="cinder",
         rule="volume_extension:volume_image_metadata")
     @decorators.idempotent_id('3d48ca91-f02b-4616-a69d-4a8b296c8529')
     def test_volume_list_image_metadata(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.list_volumes(detail=True)
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.list_volumes(detail=True)
diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_hosts_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_hosts_rbac.py
index 9519cea..c21c40e 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_volume_hosts_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_volume_hosts_rbac.py
@@ -25,8 +25,8 @@
                                  rule="volume_extension:hosts")
     @decorators.idempotent_id('64e837f5-5452-4e26-b934-c721ea7a8644')
     def test_list_hosts(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volume_hosts_client.list_hosts()
+        with self.rbac_utils.override_role(self):
+            self.volume_hosts_client.list_hosts()
 
     @decorators.idempotent_id('9ddf321e-788f-4787-b8cc-dfa59e264143')
     @rbac_rule_validation.action(service="cinder",
@@ -37,5 +37,5 @@
         self.assertNotEmpty(host_names, "No available volume host was found, "
                                         "all hosts found were: %s" % hosts)
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volume_hosts_client.show_host(host_names[0])
+        with self.rbac_utils.override_role(self):
+            self.volume_hosts_client.show_host(host_names[0])
diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_metadata_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_metadata_rbac.py
index 5866934..768372f 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_volume_metadata_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_volume_metadata_rbac.py
@@ -49,50 +49,51 @@
                                  rule="volume:create_volume_metadata")
     @decorators.idempotent_id('232bbb8b-4c29-44dc-9077-b1398c20b738')
     def test_create_volume_metadata(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._add_metadata(self.volume)
+        with self.rbac_utils.override_role(self):
+            self._add_metadata(self.volume)
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:get_volume_metadata")
     @decorators.idempotent_id('87ea37d9-23ab-47b2-a59c-16fc4d2c6dfa')
     def test_show_volume_metadata(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.show_volume_metadata(self.volume['id'])['metadata']
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.show_volume_metadata(
+                self.volume['id'])['metadata']
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:delete_volume_metadata")
     @decorators.idempotent_id('7498dfc1-9db2-4423-ad20-e6dcb25d1beb')
     def test_delete_volume_metadata_item(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.delete_volume_metadata_item(self.volume['id'],
-                                                        "key1")
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.delete_volume_metadata_item(self.volume['id'],
+                                                            "key1")
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:update_volume_metadata")
     @decorators.idempotent_id('8ce2ff80-99ba-49ae-9bb1-7e96729ee5af')
     def test_update_volume_metadata_item(self):
         updated_metadata_item = {"key1": "value1_update"}
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.update_volume_metadata_item(
-            self.volume['id'], "key1", updated_metadata_item)['meta']
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.update_volume_metadata_item(
+                self.volume['id'], "key1", updated_metadata_item)['meta']
 
     @decorators.idempotent_id('a231b445-97a5-4657-b05f-245895e88da9')
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:update_volume_metadata")
     def test_update_volume_metadata(self):
         updated_metadata = {"key1": "value1"}
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.update_volume_metadata(self.volume['id'],
-                                                   updated_metadata)
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.update_volume_metadata(self.volume['id'],
+                                                       updated_metadata)
 
     @decorators.idempotent_id('a9d9e825-5ea3-42e6-96f3-7ac4e97b2ed0')
     @rbac_rule_validation.action(
         service="cinder",
         rule="volume_extension:volume_image_metadata")
     def test_update_volume_image_metadata(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.update_volume_image_metadata(
-            self.volume['id'], image_id=self.image_id)
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.update_volume_image_metadata(
+                self.volume['id'], image_id=self.image_id)
         self.addCleanup(self.volumes_client.delete_volume_image_metadata,
                         self.volume['id'], 'image_id')
 
@@ -107,6 +108,6 @@
                         self.volumes_client.delete_volume_image_metadata,
                         self.volume['id'], 'image_id')
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volumes_client.delete_volume_image_metadata(self.volume['id'],
-                                                         'image_id')
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.delete_volume_image_metadata(self.volume['id'],
+                                                             'image_id')
diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_quotas_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_quotas_rbac.py
index 6a79345..32cc48c 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_volume_quotas_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_volume_quotas_rbac.py
@@ -47,24 +47,24 @@
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume_extension:quotas:show")
     def test_list_quotas(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.quotas_client.show_quota_set(self.demo_tenant_id)
+        with self.rbac_utils.override_role(self):
+            self.quotas_client.show_quota_set(self.demo_tenant_id)
 
     @decorators.idempotent_id('e47cf444-2753-4983-be6d-fc0d6523720f')
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume_extension:quotas:show")
     def test_list_quotas_usage_true(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.quotas_client.show_quota_set(self.demo_tenant_id,
-                                          params={'usage': True})
+        with self.rbac_utils.override_role(self):
+            self.quotas_client.show_quota_set(self.demo_tenant_id,
+                                              params={'usage': True})
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume_extension:quotas:show")
     @decorators.idempotent_id('b3c7177e-b6b1-4d0f-810a-fc95606964dd')
     def test_list_default_quotas(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.quotas_client.show_default_quota_set(
-            self.demo_tenant_id)
+        with self.rbac_utils.override_role(self):
+            self.quotas_client.show_default_quota_set(
+                self.demo_tenant_id)
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume_extension:quotas:update")
@@ -75,9 +75,9 @@
                          'volumes': 11,
                          'snapshots': 11}
         # Update limits for all quota resources.
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.quotas_client.update_quota_set(
-            self.demo_tenant_id, **new_quota_set)
+        with self.rbac_utils.override_role(self):
+            self.quotas_client.update_quota_set(
+                self.demo_tenant_id, **new_quota_set)
 
     @decorators.idempotent_id('329bdb88-5132-4810-b1fc-350d181577e3')
     @rbac_rule_validation.action(service="cinder",
@@ -85,5 +85,5 @@
     def test_delete_quota_set(self):
         self._restore_default_quota_set()
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.quotas_client.delete_quota_set(self.demo_tenant_id)
+        with self.rbac_utils.override_role(self):
+            self.quotas_client.delete_quota_set(self.demo_tenant_id)
diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_transfers_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_transfers_rbac.py
index a33ebe0..ad0d031 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_volume_transfers_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_volume_transfers_rbac.py
@@ -22,13 +22,11 @@
 
 
 class VolumesTransfersV3RbacTest(rbac_base.BaseVolumeRbacTest):
-    credentials = ['primary', 'admin']
 
     @classmethod
     def setup_clients(cls):
         super(VolumesTransfersV3RbacTest, cls).setup_clients()
         cls.transfers_client = cls.os_primary.volume_transfers_v2_client
-        cls.admin_volumes_client = cls.os_admin.volumes_client_latest
 
     @classmethod
     def resource_setup(cls):
@@ -42,7 +40,7 @@
         test_utils.call_and_ignore_notfound_exc(
             self.transfers_client.delete_volume_transfer, transfer['id'])
         waiters.wait_for_volume_resource_status(
-            self.admin_volumes_client, self.volume['id'], 'available')
+            self.volumes_client, self.volume['id'], 'available')
 
     def _create_transfer(self):
         transfer = self.transfers_client.create_volume_transfer(
@@ -54,23 +52,23 @@
                                  rule="volume:create_transfer")
     @decorators.idempotent_id('25413af4-468d-48ff-94ca-4436f8526b3e')
     def test_create_volume_transfer(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._create_transfer()
+        with self.rbac_utils.override_role(self):
+            self._create_transfer()
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:get_transfer")
     @decorators.idempotent_id('7a0925d3-ed97-4c25-8299-e5cdabe2eb55')
     def test_get_volume_transfer(self):
         transfer = self._create_transfer()
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.transfers_client.show_volume_transfer(transfer['id'])
+        with self.rbac_utils.override_role(self):
+            self.transfers_client.show_volume_transfer(transfer['id'])
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:get_all_transfers")
     @decorators.idempotent_id('02a06f2b-5040-49e2-b2b7-619a7db59603')
     def test_list_volume_transfers(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.transfers_client.list_volume_transfers()
+        with self.rbac_utils.override_role(self):
+            self.transfers_client.list_volume_transfers()
 
     @decorators.idempotent_id('e84e45b0-9872-40bf-bf44-971266161a86')
     @rbac_rule_validation.action(service="cinder",
@@ -84,14 +82,16 @@
     @decorators.idempotent_id('987f2a11-d657-4984-a6c9-28f06c1cd014')
     def test_accept_volume_transfer(self):
         transfer = self._create_transfer()
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.transfers_client.accept_volume_transfer(
-            transfer['id'], auth_key=transfer['auth_key'])
+        with self.rbac_utils.override_role(self):
+            self.transfers_client.accept_volume_transfer(
+                transfer['id'], auth_key=transfer['auth_key'])
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:delete_transfer")
     @decorators.idempotent_id('4672187e-7fff-454b-832a-5c8865dda868')
     def test_delete_volume_transfer(self):
         transfer = self._create_transfer()
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.transfers_client.delete_volume_transfer(transfer['id'])
+        with self.rbac_utils.override_role(self):
+            self.transfers_client.delete_volume_transfer(transfer['id'])
+        waiters.wait_for_volume_resource_status(
+            self.volumes_client, self.volume['id'], 'available')
diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_types_access_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_types_access_rbac.py
index f4aeee8..89dc0a2 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_volume_types_access_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_volume_types_access_rbac.py
@@ -56,17 +56,17 @@
     def test_list_type_access(self):
         self._add_type_access()
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volume_types_client.list_type_access(self.vol_type['id'])[
-            'volume_type_access']
+        with self.rbac_utils.override_role(self):
+            self.volume_types_client.list_type_access(self.vol_type['id'])[
+                'volume_type_access']
 
     @decorators.idempotent_id('b462eeba-45d0-4d6e-945a-a1d27708d367')
     @rbac_rule_validation.action(
         service="cinder",
         rule="volume_extension:volume_type_access:addProjectAccess")
     def test_add_type_access(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._add_type_access(ignore_not_found=True)
+        with self.rbac_utils.override_role(self):
+            self._add_type_access(ignore_not_found=True)
 
     @decorators.idempotent_id('8f848aeb-636a-46f1-aeeb-e2a60e9d2bfe')
     @rbac_rule_validation.action(
@@ -75,6 +75,6 @@
     def test_remove_type_access(self):
         self._add_type_access(ignore_not_found=True)
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volume_types_client.remove_type_access(
-            self.vol_type['id'], project=self.project_id)
+        with self.rbac_utils.override_role(self):
+            self.volume_types_client.remove_type_access(
+                self.vol_type['id'], project=self.project_id)
diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_types_extra_specs_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_types_extra_specs_rbac.py
index 2abfd32..8d4c265 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_volume_types_extra_specs_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_volume_types_extra_specs_rbac.py
@@ -57,17 +57,17 @@
         service="cinder",
         rule="volume_extension:types_extra_specs:index")
     def test_list_volume_types_extra_specs(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volume_types_client.list_volume_types_extra_specs(
-            self.vol_type['id'])['extra_specs']
+        with self.rbac_utils.override_role(self):
+            self.volume_types_client.list_volume_types_extra_specs(
+                self.vol_type['id'])['extra_specs']
 
     @rbac_rule_validation.action(
         service="cinder",
         rule="volume_extension:types_extra_specs:create")
     @decorators.idempotent_id('eea40251-990b-49b0-99ae-10e4585b479b')
     def test_create_volume_type_extra_specs(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._create_volume_type_extra_specs(ignore_not_found=True)
+        with self.rbac_utils.override_role(self):
+            self._create_volume_type_extra_specs(ignore_not_found=True)
 
     @decorators.idempotent_id('e2dcc9c6-2fef-431d-afaf-92b45bc76d1a')
     @rbac_rule_validation.action(
@@ -76,9 +76,9 @@
     def test_show_volume_type_extra_specs(self):
         self._create_volume_type_extra_specs()
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volume_types_client.show_volume_type_extra_specs(
-            self.vol_type['id'], self.spec_key)
+        with self.rbac_utils.override_role(self):
+            self.volume_types_client.show_volume_type_extra_specs(
+                self.vol_type['id'], self.spec_key)
 
     @decorators.idempotent_id('93001912-f938-41c7-8787-62dc7010fd52')
     @rbac_rule_validation.action(
@@ -87,9 +87,9 @@
     def test_delete_volume_type_extra_specs(self):
         self._create_volume_type_extra_specs(ignore_not_found=True)
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volume_types_client.delete_volume_type_extra_specs(
-            self.vol_type['id'], self.spec_key)
+        with self.rbac_utils.override_role(self):
+            self.volume_types_client.delete_volume_type_extra_specs(
+                self.vol_type['id'], self.spec_key)
 
     @decorators.idempotent_id('0a444437-7402-4fbe-a18a-93af2ee00618')
     @rbac_rule_validation.action(
@@ -99,6 +99,6 @@
         self._create_volume_type_extra_specs()
         update_extra_specs = {self.spec_key: "val2"}
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.volume_types_client.update_volume_type_extra_specs(
-            self.vol_type['id'], self.spec_key, update_extra_specs)
+        with self.rbac_utils.override_role(self):
+            self.volume_types_client.update_volume_type_extra_specs(
+                self.vol_type['id'], self.spec_key, update_extra_specs)
diff --git a/patrole_tempest_plugin/tests/api/volume/test_volumes_backup_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volumes_backup_rbac.py
index 51ee925..7f5f566 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_volumes_backup_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_volumes_backup_rbac.py
@@ -30,7 +30,6 @@
 
 
 class VolumesBackupsV3RbacTest(rbac_base.BaseVolumeRbacTest):
-    credentials = ['primary', 'admin']
 
     @classmethod
     def skip_checks(cls):
@@ -39,11 +38,6 @@
             raise cls.skipException("Cinder backup feature disabled")
 
     @classmethod
-    def setup_clients(cls):
-        super(VolumesBackupsV3RbacTest, cls).setup_clients()
-        cls.admin_backups_client = cls.os_admin.backups_v2_client
-
-    @classmethod
     def resource_setup(cls):
         super(VolumesBackupsV3RbacTest, cls).resource_setup()
         cls.volume = cls.create_volume()
@@ -65,8 +59,8 @@
                                  rule="backup:create")
     @decorators.idempotent_id('6887ec94-0bcf-4ab7-b30f-3808a4b5a2a5')
     def test_create_backup(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.create_backup(volume_id=self.volume['id'])
+        with self.rbac_utils.override_role(self):
+            self.create_backup(volume_id=self.volume['id'])
 
     @decorators.attr(type='slow')
     @rbac_rule_validation.action(service="cinder",
@@ -75,22 +69,22 @@
     def test_show_backup(self):
         backup = self.create_backup(volume_id=self.volume['id'])
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.backups_client.show_backup(backup['id'])
+        with self.rbac_utils.override_role(self):
+            self.backups_client.show_backup(backup['id'])
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="backup:get_all")
     @decorators.idempotent_id('4d18f0f0-7e01-4007-b622-dedc859b22f6')
     def test_list_backups(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.backups_client.list_backups()
+        with self.rbac_utils.override_role(self):
+            self.backups_client.list_backups()
 
     @decorators.idempotent_id('dbd69865-876f-4835-b70e-7341153fb162')
     @rbac_rule_validation.action(service="cinder",
                                  rule="backup:get_all")
     def test_list_backups_with_details(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.backups_client.list_backups(detail=True)
+        with self.rbac_utils.override_role(self):
+            self.backups_client.list_backups(detail=True)
 
     @decorators.attr(type='slow')
     @decorators.idempotent_id('50f43bde-205e-438e-9a05-5eac07fc3d63')
@@ -100,10 +94,10 @@
     def test_reset_backup_status(self):
         backup = self.create_backup(volume_id=self.volume['id'])
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.backups_client.reset_backup_status(backup_id=backup['id'],
-                                                status='error')
-        waiters.wait_for_volume_resource_status(self.admin_backups_client,
+        with self.rbac_utils.override_role(self):
+            self.backups_client.reset_backup_status(backup_id=backup['id'],
+                                                    status='error')
+        waiters.wait_for_volume_resource_status(self.backups_client,
                                                 backup['id'], 'error')
 
     @decorators.attr(type='slow')
@@ -113,10 +107,11 @@
     def test_restore_backup(self):
         backup = self.create_backup(volume_id=self.volume['id'])
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        restore = self.backups_client.restore_backup(backup['id'])['restore']
+        with self.rbac_utils.override_role(self):
+            restore = self.backups_client.restore_backup(
+                backup['id'])['restore']
         waiters.wait_for_volume_resource_status(
-            self.admin_backups_client, restore['backup_id'], 'available')
+            self.backups_client, restore['backup_id'], 'available')
 
     @decorators.attr(type='slow')
     @rbac_rule_validation.action(service="cinder",
@@ -130,13 +125,13 @@
             volume_id=self.volume['id'])['backup']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                         self.backups_client.delete_backup, backup['id'])
-        waiters.wait_for_volume_resource_status(self.admin_backups_client,
+        waiters.wait_for_volume_resource_status(self.backups_client,
                                                 backup['id'], 'available')
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.backups_client.delete_backup(backup['id'])
+        with self.rbac_utils.override_role(self):
+            self.backups_client.delete_backup(backup['id'])
         # Wait for deletion so error isn't thrown during clean up.
-        self.admin_backups_client.wait_for_resource_deletion(backup['id'])
+        self.backups_client.wait_for_resource_deletion(backup['id'])
 
     @decorators.attr(type='slow')
     @rbac_rule_validation.action(service="cinder",
@@ -145,8 +140,8 @@
     def test_export_backup(self):
         backup = self.create_backup(volume_id=self.volume['id'])
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.backups_client.export_backup(backup['id'])['backup-record']
+        with self.rbac_utils.override_role(self):
+            self.backups_client.export_backup(backup['id'])['backup-record']
 
     @decorators.attr(type='slow')
     @rbac_rule_validation.action(service="cinder",
@@ -160,10 +155,10 @@
         new_url = self._modify_backup_url(
             export_backup['backup_url'], {'id': new_id})
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        import_backup = self.backups_client.import_backup(
-            backup_service=export_backup['backup_service'],
-            backup_url=new_url)['backup']
+        with self.rbac_utils.override_role(self):
+            import_backup = self.backups_client.import_backup(
+                backup_service=export_backup['backup_service'],
+                backup_url=new_url)['backup']
         self.addCleanup(self.backups_client.delete_backup, import_backup['id'])
 
 
@@ -188,8 +183,8 @@
         backup = self.create_backup(volume_id=volume['id'])
         expected_attr = 'os-backup-project-attr:project_id'
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        body = self.backups_client.show_backup(backup['id'])['backup']
+        with self.rbac_utils.override_role(self):
+            body = self.backups_client.show_backup(backup['id'])['backup']
 
         # Show backup API attempts to inject the attribute below into the
         # response body but only if policy enforcement succeeds.
@@ -221,6 +216,6 @@
             'name': data_utils.rand_name(self.__class__.__name__ + '-Backup'),
             'description': data_utils.rand_name("volume-backup-description")
         }
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.backups_client.update_backup(backup['id'],
-                                          **update_kwargs)
+        with self.rbac_utils.override_role(self):
+            self.backups_client.update_backup(backup['id'],
+                                              **update_kwargs)
diff --git a/patrole_tempest_plugin/tests/api/volume/test_volumes_manage_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volumes_manage_rbac.py
index 1365b79..852d81e 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_volumes_manage_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_volumes_manage_rbac.py
@@ -26,7 +26,6 @@
 
 
 class VolumesManageV3RbacTest(rbac_base.BaseVolumeRbacTest):
-    credentials = ['primary', 'admin']
 
     @classmethod
     def skip_checks(cls):
@@ -43,7 +42,6 @@
     def setup_clients(cls):
         super(VolumesManageV3RbacTest, cls).setup_clients()
         cls.volume_manage_client = cls.os_primary.volume_manage_v2_client
-        cls.admin_volumes_client = cls.os_admin.volumes_client_latest
 
     def _manage_volume(self, org_volume):
         # Manage volume
@@ -61,15 +59,11 @@
         new_volume_id = self.volume_manage_client.manage_volume(
             **new_volume_ref)['volume']['id']
 
-        waiters.wait_for_volume_resource_status(self.admin_volumes_client,
+        waiters.wait_for_volume_resource_status(self.volumes_client,
                                                 new_volume_id, 'available')
         self.addCleanup(self.delete_volume,
                         self.volumes_client, new_volume_id)
 
-    def _unmanage_volume(self, volume):
-        self.volumes_client.unmanage_volume(volume['id'])
-        self.admin_volumes_client.wait_for_resource_deletion(volume['id'])
-
     @rbac_rule_validation.action(
         service="cinder",
         rule="volume_extension:volume_manage")
@@ -80,19 +74,37 @@
 
         # By default, the volume is managed after creation.  We need to
         # unmanage the volume first before testing manage volume.
-        self._unmanage_volume(volume)
+        self.volumes_client.unmanage_volume(volume['id'])
+        self.volumes_client.wait_for_resource_deletion(volume['id'])
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        try:
-            self._manage_volume(volume)
-        except exceptions.Forbidden as e:
-            # Since the test role under test does not have permission to
-            # manage the volume, Forbidden exception is thrown and the
-            # manageable list will not be cleaned up. Therefore, we need to
-            # re-manage the volume at the end of the test case for proper
-            # resource clean up.
-            self.addCleanup(self._manage_volume, volume)
-            raise exceptions.Forbidden(e)
+        new_volume_name = data_utils.rand_name(
+            self.__class__.__name__ + '-volume')
+
+        new_volume_ref = {
+            'name': new_volume_name,
+            'host': volume['os-vol-host-attr:host'],
+            'ref': {CONF.volume.manage_volume_ref[0]:
+                    CONF.volume.manage_volume_ref[1] % volume['id']},
+            'volume_type': volume['volume_type'],
+            'availability_zone': volume['availability_zone']}
+
+        with self.rbac_utils.override_role(self):
+            try:
+                new_volume_id = self.volume_manage_client.manage_volume(
+                    **new_volume_ref)['volume']['id']
+            except exceptions.Forbidden as e:
+                # Since the test role under test does not have permission to
+                # manage the volume, Forbidden exception is thrown and the
+                # manageable list will not be cleaned up. Therefore, we need to
+                # re-manage the volume at the end of the test case for proper
+                # resource clean up.
+                self.addCleanup(self._manage_volume, volume)
+                raise exceptions.Forbidden(e)
+
+        waiters.wait_for_volume_resource_status(self.volumes_client,
+                                                new_volume_id, 'available')
+        self.addCleanup(
+            self.delete_volume, self.volumes_client, new_volume_id)
 
     @rbac_rule_validation.action(
         service="cinder",
@@ -102,8 +114,9 @@
         volume_id = self.create_volume()['id']
         volume = self.volumes_client.show_volume(volume_id)['volume']
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._unmanage_volume(volume)
+        with self.rbac_utils.override_role(self):
+            self.volumes_client.unmanage_volume(volume['id'])
+        self.volumes_client.wait_for_resource_deletion(volume['id'])
 
         # In order to clean up the manageable list, we need to re-manage the
         # volume after the test.  The _manage_volume method will set up the
diff --git a/patrole_tempest_plugin/tests/api/volume/test_volumes_snapshots_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volumes_snapshots_rbac.py
index 7491820..df4fd10 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_volumes_snapshots_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_volumes_snapshots_rbac.py
@@ -24,7 +24,6 @@
 
 
 class VolumesSnapshotV3RbacTest(rbac_base.BaseVolumeRbacTest):
-    credentials = ['primary', 'admin']
 
     @classmethod
     def skip_checks(cls):
@@ -33,11 +32,6 @@
             raise cls.skipException("Cinder volume snapshots are disabled")
 
     @classmethod
-    def setup_clients(cls):
-        super(VolumesSnapshotV3RbacTest, cls).setup_clients()
-        cls.admin_snapshots_client = cls.os_admin.snapshots_v2_client
-
-    @classmethod
     def resource_setup(cls):
         super(VolumesSnapshotV3RbacTest, cls).resource_setup()
         # Create a test shared volume for tests
@@ -60,17 +54,17 @@
     @decorators.idempotent_id('ac7b2ee5-fbc0-4360-afc2-de8fa4881ede')
     def test_snapshot_create(self):
         # Create a temp snapshot
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.create_snapshot(self.volume['id'])
+        with self.rbac_utils.override_role(self):
+            self.create_snapshot(self.volume['id'])
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:get_snapshot")
     @decorators.idempotent_id('93a11b40-1ba8-44d6-a196-f8d97220f796')
     def test_snapshot_get(self):
         # Get the snapshot
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.snapshots_client.show_snapshot(self.snapshot
-                                            ['id'])['snapshot']
+        with self.rbac_utils.override_role(self):
+            self.snapshots_client.show_snapshot(self.snapshot
+                                                ['id'])['snapshot']
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:update_snapshot")
@@ -79,11 +73,11 @@
         new_desc = 'This is the new description of snapshot.'
         params = {'description': new_desc}
         # Updates snapshot with new values
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.snapshots_client.update_snapshot(
-            self.snapshot['id'], **params)['snapshot']
+        with self.rbac_utils.override_role(self):
+            self.snapshots_client.update_snapshot(
+                self.snapshot['id'], **params)['snapshot']
         waiters.wait_for_volume_resource_status(
-            self.admin_snapshots_client, self.snapshot['id'], 'available')
+            self.snapshots_client, self.snapshot['id'], 'available')
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:get_all_snapshots")
@@ -92,8 +86,8 @@
         """list snapshots with params."""
         # Verify list snapshots by display_name filter
         params = {'name': self.snapshot['name']}
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._list_by_param_values(params)
+        with self.rbac_utils.override_role(self):
+            self._list_by_param_values(params)
 
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:delete_snapshot")
@@ -101,8 +95,8 @@
     def test_snapshot_delete(self):
         # Create a temp snapshot
         temp_snapshot = self.create_snapshot(self.volume['id'])
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        # Delete the snapshot
-        self.snapshots_client.delete_snapshot(temp_snapshot['id'])
-        self.admin_snapshots_client.wait_for_resource_deletion(
+        with self.rbac_utils.override_role(self):
+            # Delete the snapshot
+            self.snapshots_client.delete_snapshot(temp_snapshot['id'])
+        self.snapshots_client.wait_for_resource_deletion(
             temp_snapshot['id'])
diff --git a/patrole_tempest_plugin/tests/unit/test_policy_authority.py b/patrole_tempest_plugin/tests/unit/test_policy_authority.py
index db651fc..d2074e7 100644
--- a/patrole_tempest_plugin/tests/unit/test_policy_authority.py
+++ b/patrole_tempest_plugin/tests/unit/test_policy_authority.py
@@ -269,8 +269,10 @@
             test_tenant_id, test_user_id, "custom_rbac_policy")
 
         fake_rule = 'fake_rule'
-        expected_message = "Policy action: {0} not found in policy file: {1}."\
-                           .format(fake_rule, self.custom_policy_file)
+        expected_message = (
+            "Policy action \"{0}\" not found in policy file: {1} or among "
+            "registered policy in code defaults for service.").format(
+            fake_rule, self.custom_policy_file)
 
         e = self.assertRaises(rbac_exceptions.RbacParsingException,
                               authority.allowed, fake_rule, None)
@@ -289,9 +291,10 @@
             **{'__getitem__.return_value.side_effect': Exception(
                mock.sentinel.error)})
 
-        expected_message = "Policy action: {0} not found in "\
-                           "policy file: {1}.".format(mock.sentinel.rule,
-                                                      self.custom_policy_file)
+        expected_message = (
+            "Policy action \"{0}\" not found in policy file: {1} or among "
+            "registered policy in code defaults for service.").format(
+            mock.sentinel.rule, self.custom_policy_file)
 
         e = self.assertRaises(rbac_exceptions.RbacParsingException,
                               authority.allowed, mock.sentinel.rule, None)
diff --git a/playbooks/legacy/patrole-admin/post.yaml b/playbooks/patrole-admin/post.yaml
similarity index 100%
rename from playbooks/legacy/patrole-admin/post.yaml
rename to playbooks/patrole-admin/post.yaml
diff --git a/playbooks/legacy/patrole-admin/run.yaml b/playbooks/patrole-admin/run.yaml
similarity index 100%
rename from playbooks/legacy/patrole-admin/run.yaml
rename to playbooks/patrole-admin/run.yaml
diff --git a/playbooks/legacy/patrole-member/post.yaml b/playbooks/patrole-member/post.yaml
similarity index 100%
rename from playbooks/legacy/patrole-member/post.yaml
rename to playbooks/patrole-member/post.yaml
diff --git a/playbooks/legacy/patrole-member/run.yaml b/playbooks/patrole-member/run.yaml
similarity index 100%
rename from playbooks/legacy/patrole-member/run.yaml
rename to playbooks/patrole-member/run.yaml
diff --git a/playbooks/legacy/patrole-multinode-admin/post.yaml b/playbooks/patrole-multinode-admin/post.yaml
similarity index 100%
rename from playbooks/legacy/patrole-multinode-admin/post.yaml
rename to playbooks/patrole-multinode-admin/post.yaml
diff --git a/playbooks/legacy/patrole-multinode-admin/run.yaml b/playbooks/patrole-multinode-admin/run.yaml
similarity index 100%
rename from playbooks/legacy/patrole-multinode-admin/run.yaml
rename to playbooks/patrole-multinode-admin/run.yaml
diff --git a/playbooks/legacy/patrole-multinode-member/post.yaml b/playbooks/patrole-multinode-member/post.yaml
similarity index 100%
rename from playbooks/legacy/patrole-multinode-member/post.yaml
rename to playbooks/patrole-multinode-member/post.yaml
diff --git a/playbooks/legacy/patrole-multinode-member/run.yaml b/playbooks/patrole-multinode-member/run.yaml
similarity index 100%
rename from playbooks/legacy/patrole-multinode-member/run.yaml
rename to playbooks/patrole-multinode-member/run.yaml
diff --git a/playbooks/legacy/patrole-py35-member/post.yaml b/playbooks/patrole-py35-member/post.yaml
similarity index 100%
rename from playbooks/legacy/patrole-py35-member/post.yaml
rename to playbooks/patrole-py35-member/post.yaml
diff --git a/playbooks/legacy/patrole-py35-member/run.yaml b/playbooks/patrole-py35-member/run.yaml
similarity index 100%
rename from playbooks/legacy/patrole-py35-member/run.yaml
rename to playbooks/patrole-py35-member/run.yaml
diff --git a/test-requirements.txt b/test-requirements.txt
index 0437566..add2388 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -3,8 +3,8 @@
 # process, which may cause wedges in the gate later.
 hacking>=1.0.0 # Apache-2.0
 
-sphinx>=1.6.2 # BSD
-openstackdocstheme>=1.17.0 # Apache-2.0
+sphinx!=1.6.6,>=1.6.2 # BSD
+openstackdocstheme>=1.18.1 # Apache-2.0
 reno>=2.5.0 # Apache-2.0
 fixtures>=3.0.0 # Apache-2.0/BSD
 mock>=2.0.0 # BSD
