Merge "Migrate to override_role for compute module (part 1)"
diff --git a/patrole_tempest_plugin/tests/api/image/rbac_base.py b/patrole_tempest_plugin/tests/api/image/rbac_base.py
index dd4e5ed..ed69c3d 100644
--- a/patrole_tempest_plugin/tests/api/image/rbac_base.py
+++ b/patrole_tempest_plugin/tests/api/image/rbac_base.py
@@ -19,21 +19,6 @@
 CONF = config.CONF
 
 
-class BaseV1ImageRbacTest(image_base.BaseV1ImageTest):
-
-    @classmethod
-    def skip_checks(cls):
-        super(BaseV1ImageRbacTest, cls).skip_checks()
-        if not CONF.patrole.enable_rbac:
-            raise cls.skipException(
-                "%s skipped as RBAC testing not enabled" % cls.__name__)
-
-    @classmethod
-    def setup_clients(cls):
-        super(BaseV1ImageRbacTest, cls).setup_clients()
-        cls.rbac_utils = rbac_utils.RbacUtils(cls)
-
-
 class BaseV2ImageRbacTest(image_base.BaseV2ImageTest):
 
     @classmethod
diff --git a/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py b/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py
index 2fb26f8..c55935f 100644
--- a/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py
@@ -106,9 +106,9 @@
         self.create_port(**post_body)
 
     @rbac_rule_validation.action(service="neutron",
-                                 rule="create_port:fixed_ips")
+                                 rule="create_port:fixed_ips:ip_address")
     @decorators.idempotent_id('2551e10d-006a-413c-925a-8c6f834c09ac')
-    def test_create_port_fixed_ips(self):
+    def test_create_port_fixed_ips_ip_address(self):
 
         ip_list = self._get_unused_ip_address()
         fixed_ips = [{'ip_address': ip_list[0]},
@@ -269,9 +269,9 @@
                         mac_address=original_mac_address)
 
     @rbac_rule_validation.action(service="neutron",
-                                 rule="update_port:fixed_ips")
+                                 rule="update_port:fixed_ips:ip_address")
     @decorators.idempotent_id('c091c825-532b-4c6f-a14f-affd3259c1c3')
-    def test_update_port_fixed_ips(self):
+    def test_update_port_fixed_ips_ip_address(self):
 
         # Pick an ip address within the allocation_pools range.
         post_body = {'network': self.network}
diff --git a/patrole_tempest_plugin/tests/api/volume/test_qos_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_qos_rbac.py
index 3ac59be..adfd397 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_qos_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_qos_rbac.py
@@ -64,7 +64,8 @@
         self.qos_client.show_qos(qos['id'])['qos_specs']
 
     @rbac_rule_validation.action(service="cinder",
-                                 rule="volume_extension:qos_specs_manage:get")
+                                 rule="volume_extension:"
+                                      "qos_specs_manage:get_all")
     @decorators.idempotent_id('ff1e98f3-d456-40a9-96d4-c7e4a55dcffa')
     def test_get_association_qos(self):
         qos = self._create_test_qos_specs()
diff --git a/patrole_tempest_plugin/tests/api/volume/test_snapshots_actions_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_snapshots_actions_rbac.py
index 96243d8..f7a4151 100644
--- a/patrole_tempest_plugin/tests/api/volume/test_snapshots_actions_rbac.py
+++ b/patrole_tempest_plugin/tests/api/volume/test_snapshots_actions_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 import decorators
 
@@ -37,15 +38,26 @@
         cls.snapshot = cls.create_snapshot(volume_id=cls.volume['id'])
         cls.snapshot_id = cls.snapshot['id']
 
+    def tearDown(self):
+        # Set snapshot's status to available after test
+        status = 'available'
+        self.snapshots_client.reset_snapshot_status(self.snapshot_id,
+                                                    status)
+        waiters.wait_for_volume_resource_status(self.snapshots_client,
+                                                self.snapshot_id, status)
+        super(SnapshotsActionsV3RbacTest, self).tearDown()
+
     @rbac_rule_validation.action(
         service="cinder",
         rule="volume_extension:snapshot_admin_actions:reset_status")
     @decorators.idempotent_id('ea430145-34ef-408d-b678-95d5ae5f46eb')
     def test_reset_snapshot_status(self):
         status = 'error'
-        self.rbac_utils.switch_role(self, toggle_rbac_role=True)
-        self.snapshots_client.reset_snapshot_status(self.snapshot['id'],
-                                                    status)
+        with self.rbac_utils.override_role(self):
+            self.snapshots_client.reset_snapshot_status(
+                self.snapshot['id'], status)
+        waiters.wait_for_volume_resource_status(
+            self.snapshots_client, self.snapshot['id'], status)
 
     @rbac_rule_validation.action(
         service="cinder",
@@ -57,3 +69,19 @@
         self.rbac_utils.switch_role(self, toggle_rbac_role=True)
         self.snapshots_client.force_delete_snapshot(temp_snapshot['id'])
         self.snapshots_client.wait_for_resource_deletion(temp_snapshot['id'])
+
+    @decorators.idempotent_id('a95eab2a-c441-4609-9235-f7478627da88')
+    @rbac_rule_validation.action(
+        service="cinder",
+        rule="snapshot_extension:snapshot_actions:update_snapshot_status")
+    def test_update_snapshot_status(self):
+        status = 'creating'
+        self.snapshots_client.reset_snapshot_status(
+            self.snapshot['id'], status)
+        waiters.wait_for_volume_resource_status(self.snapshots_client,
+                                                self.snapshot['id'], status)
+        with self.rbac_utils.override_role(self):
+            self.snapshots_client.update_snapshot_status(self.snapshot['id'],
+                                                         status="creating")
+        waiters.wait_for_volume_resource_status(
+            self.snapshots_client, self.snapshot['id'], status)
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 726f84e..9519cea 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
@@ -28,7 +28,6 @@
         self.rbac_utils.switch_role(self, toggle_rbac_role=True)
         self.volume_hosts_client.list_hosts()
 
-    @decorators.skip_because(bug="1732808")
     @decorators.idempotent_id('9ddf321e-788f-4787-b8cc-dfa59e264143')
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume_extension:hosts")
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 9640dc6..a33ebe0 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
@@ -72,6 +72,13 @@
         self.rbac_utils.switch_role(self, toggle_rbac_role=True)
         self.transfers_client.list_volume_transfers()
 
+    @decorators.idempotent_id('e84e45b0-9872-40bf-bf44-971266161a86')
+    @rbac_rule_validation.action(service="cinder",
+                                 rule="volume:get_all_transfers")
+    def test_list_volume_transfers_details(self):
+        with self.rbac_utils.override_role(self):
+            self.transfers_client.list_volume_transfers(detail=True)
+
     @rbac_rule_validation.action(service="cinder",
                                  rule="volume:accept_transfer")
     @decorators.idempotent_id('987f2a11-d657-4984-a6c9-28f06c1cd014')