diff --git a/patrole_tempest_plugin/tests/api/image/test_image_namespace_rbac.py b/patrole_tempest_plugin/tests/api/image/test_image_namespace_rbac.py
index c6bd60e..204263a 100644
--- a/patrole_tempest_plugin/tests/api/image/test_image_namespace_rbac.py
+++ b/patrole_tempest_plugin/tests/api/image/test_image_namespace_rbac.py
@@ -33,10 +33,10 @@
         """
         namespace_name = data_utils.rand_name(
             self.__class__.__name__ + '-test-ns')
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.namespaces_client.create_namespace(
-            namespace=namespace_name,
-            protected=False)
+        with self.rbac_utils.override_role(self):
+            self.namespaces_client.create_namespace(
+                namespace=namespace_name,
+                protected=False)
         self.addCleanup(
             test_utils.call_and_ignore_notfound_exc,
             self.namespaces_client.delete_namespace,
@@ -50,8 +50,8 @@
 
         RBAC test for the glance get_metadef_namespaces policy
         """
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.namespaces_client.list_namespaces()
+        with self.rbac_utils.override_role(self):
+            self.namespaces_client.list_namespaces()
 
     @rbac_rule_validation.action(service="glance",
                                  rule="modify_metadef_namespace")
@@ -66,10 +66,9 @@
         body = self.namespaces_client.create_namespace(
             namespace=namespace_name,
             protected=False)
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.namespaces_client.update_namespace(body['namespace'],
-                                                description="My new "
-                                                            "description")
+        with self.rbac_utils.override_role(self):
+            self.namespaces_client.update_namespace(
+                body['namespace'], description="My new description")
         self.addCleanup(
             test_utils.call_and_ignore_notfound_exc,
             self.namespaces_client.delete_namespace,
diff --git a/patrole_tempest_plugin/tests/api/image/test_image_namespace_tags_rbac.py b/patrole_tempest_plugin/tests/api/image/test_image_namespace_tags_rbac.py
index ecf2ec2..1a85b74 100644
--- a/patrole_tempest_plugin/tests/api/image/test_image_namespace_tags_rbac.py
+++ b/patrole_tempest_plugin/tests/api/image/test_image_namespace_tags_rbac.py
@@ -69,16 +69,17 @@
     @rbac_rule_validation.action(service="glance",
                                  rule="add_metadef_tag")
     def test_create_namespace_tag(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._create_namespace_tag()
+        with self.rbac_utils.override_role(self):
+            self._create_namespace_tag()
 
     @decorators.idempotent_id('4acf70cc-05da-4b1e-87b2-d5e4475164e7')
     @rbac_rule_validation.action(service="glance",
                                  rule="get_metadef_tag")
     def test_show_namespace_tag(self):
         tag_name = self._create_namespace_tag()
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.namespace_tags_client.show_namespace_tag(self.namespace, tag_name)
+        with self.rbac_utils.override_role(self):
+            self.namespace_tags_client.show_namespace_tag(self.namespace,
+                                                          tag_name)
 
     @decorators.idempotent_id('01593828-3edb-461e-8abc-8fdeb3927e37')
     @rbac_rule_validation.action(service="glance",
@@ -88,20 +89,20 @@
         updated_tag_name = data_utils.rand_name(
             self.__class__.__name__ + '-tag')
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.namespace_tags_client.update_namespace_tag(
-            self.namespace, tag_name, name=updated_tag_name)
+        with self.rbac_utils.override_role(self):
+            self.namespace_tags_client.update_namespace_tag(
+                self.namespace, tag_name, name=updated_tag_name)
 
     @decorators.idempotent_id('20ffaf76-ebdc-4267-a1ad-194346f5cc91')
     @rbac_rule_validation.action(service="glance",
                                  rule="add_metadef_tags")
     def test_create_namespace_tags(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._create_namespace_tag(multiple=True)
+        with self.rbac_utils.override_role(self):
+            self._create_namespace_tag(multiple=True)
 
     @decorators.idempotent_id('d37c1501-e787-449d-89b3-754a942a459a')
     @rbac_rule_validation.action(service="glance",
                                  rule="get_metadef_tags")
     def test_list_namespace_tags(self):
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.namespace_tags_client.list_namespace_tags(self.namespace)
+        with self.rbac_utils.override_role(self):
+            self.namespace_tags_client.list_namespace_tags(self.namespace)
diff --git a/patrole_tempest_plugin/tests/api/image/test_images_rbac.py b/patrole_tempest_plugin/tests/api/image/test_images_rbac.py
index b08f8bd..e97e803 100644
--- a/patrole_tempest_plugin/tests/api/image/test_images_rbac.py
+++ b/patrole_tempest_plugin/tests/api/image/test_images_rbac.py
@@ -24,13 +24,10 @@
 
 class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest):
 
-    credentials = ['primary', 'admin']
-
     @classmethod
     def setup_clients(cls):
         super(BasicOperationsImagesRbacTest, cls).setup_clients()
         cls.image_client = cls.os_primary.image_client_v2
-        cls.admin_image_client = cls.os_admin.image_client_v2
 
     def _create_image(self, **kwargs):
         image_name = data_utils.rand_name(self.__class__.__name__ + '-Image')
@@ -53,8 +50,8 @@
 
         RBAC test for the glance create_image endpoint
         """
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._create_image()
+        with self.rbac_utils.override_role(self):
+            self._create_image()
 
     @rbac_rule_validation.action(service="glance",
                                  rule="upload_image")
@@ -67,8 +64,8 @@
         """
         image = self._create_image()
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._upload_image(image['id'])
+        with self.rbac_utils.override_role(self):
+            self._upload_image(image['id'])
 
     @decorators.idempotent_id('f0c268f3-cb51-49aa-9bd5-d30cf647322f')
     @rbac_rule_validation.action(service="glance",
@@ -82,8 +79,8 @@
         image = self._create_image()
         self._upload_image(image['id'])
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.image_client.show_image_file(image['id'])
+        with self.rbac_utils.override_role(self):
+            self.image_client.show_image_file(image['id'])
 
     @rbac_rule_validation.action(service="glance",
                                  rule="delete_image")
@@ -96,9 +93,9 @@
         """
         image = self._create_image()
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.image_client.delete_image(image['id'])
-        self.admin_image_client.wait_for_resource_deletion(image['id'])
+        with self.rbac_utils.override_role(self):
+            self.image_client.delete_image(image['id'])
+        self.image_client.wait_for_resource_deletion(image['id'])
 
     @rbac_rule_validation.action(service="glance",
                                  rule="get_image")
@@ -111,8 +108,8 @@
         """
         image = self._create_image()
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.image_client.show_image(image['id'])
+        with self.rbac_utils.override_role(self):
+            self.image_client.show_image(image['id'])
 
     @rbac_rule_validation.action(service="glance",
                                  rule="get_images")
@@ -123,8 +120,8 @@
 
         RBAC test for the glance list_images endpoint
         """
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.image_client.list_images()['images']
+        with self.rbac_utils.override_role(self):
+            self.image_client.list_images()['images']
 
     @rbac_rule_validation.action(service="glance",
                                  rule="modify_image")
@@ -137,11 +134,11 @@
         """
         image = self._create_image()
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
         updated_image_name = data_utils.rand_name(
             self.__class__.__name__ + '-image')
-        self.image_client.update_image(image['id'], [
-            dict(replace='/name', value=updated_image_name)])
+        with self.rbac_utils.override_role(self):
+            self.image_client.update_image(image['id'], [
+                dict(replace='/name', value=updated_image_name)])
 
     @decorators.idempotent_id('244050d9-1b9a-446a-b3c5-f26f3ba8eb75')
     @rbac_rule_validation.action(service="glance",
@@ -154,10 +151,10 @@
         """
         image = self._create_image()
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.image_client.add_image_tag(
-            image['id'],
-            data_utils.rand_name(self.__class__.__name__ + '-tag'))
+        with self.rbac_utils.override_role(self):
+            self.image_client.add_image_tag(
+                image['id'],
+                data_utils.rand_name(self.__class__.__name__ + '-tag'))
 
     @decorators.idempotent_id('c4a0bf9c-b78b-48c6-a31f-72c95f943c6e')
     @rbac_rule_validation.action(service="glance",
@@ -172,8 +169,8 @@
         tag_name = data_utils.rand_name(self.__class__.__name__ + '-tag')
         self.image_client.add_image_tag(image['id'], tag_name)
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.image_client.delete_image_tag(image['id'], tag_name)
+        with self.rbac_utils.override_role(self):
+            self.image_client.delete_image_tag(image['id'], tag_name)
 
     @rbac_rule_validation.action(service="glance",
                                  rule="publicize_image")
@@ -184,8 +181,8 @@
 
         RBAC test for the glance publicize_image endpoint
         """
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._create_image(visibility='public')
+        with self.rbac_utils.override_role(self):
+            self._create_image(visibility='public')
 
     @decorators.idempotent_id('0f2d8427-134a-4d3c-a102-5fcdf5443d09')
     @rbac_rule_validation.action(service="glance",
@@ -196,8 +193,8 @@
 
         RBAC test for the glance communitize_image policy
         """
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self._create_image(visibility='community')
+        with self.rbac_utils.override_role(self):
+            self._create_image(visibility='community')
 
     @rbac_rule_validation.action(service="glance",
                                  rule="deactivate")
@@ -211,8 +208,8 @@
         image = self._create_image()
         self._upload_image(image['id'])
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.image_client.deactivate_image(image['id'])
+        with self.rbac_utils.override_role(self):
+            self.image_client.deactivate_image(image['id'])
 
     @rbac_rule_validation.action(service="glance",
                                  rule="reactivate")
@@ -226,5 +223,5 @@
         image = self._create_image()
         self._upload_image(image['id'])
 
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.image_client.reactivate_image(image['id'])
+        with self.rbac_utils.override_role(self):
+            self.image_client.reactivate_image(image['id'])
