diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_access_control.py b/tungsten_tempest_plugin/tests/api/contrail/test_access_control.py
index 8e157e5..6a2c817 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_access_control.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_access_control.py
@@ -74,7 +74,7 @@
         return new_ctrl_list
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_api_access_lists")
+                                 rules=["list_api_access_lists"])
     @decorators.idempotent_id('2bfde8fd-36fe-4e69-ba59-6f2db8941e7d')
     def test_list_api_access_lists(self):
         """test method for list api access list"""
@@ -82,7 +82,7 @@
             self.access_control_client.list_api_access_lists()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_api_access_lists")
+                                 rules=["create_api_access_lists"])
     @decorators.idempotent_id('b2b5f50c-07d8-4d79-b9a4-78187ad97353')
     def test_create_api_access_lists(self):
         """test method for create api access list"""
@@ -90,7 +90,7 @@
             self._create_api_access_lists()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_api_access_list")
+                                 rules=["show_api_access_list"])
     @decorators.idempotent_id('b82e8e6b-83b5-424d-9652-ef6a34067f4f')
     def test_show_api_access_list(self):
         """test method for show api access list"""
@@ -100,7 +100,7 @@
                 new_api_list['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_api_access_list")
+                                 rules=["update_api_access_list"])
     @decorators.idempotent_id('edc88825-1e2e-47ff-b7b4-f68d6310fbad')
     def test_update_api_access_list(self):
         """test method for update api access list"""
@@ -112,7 +112,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_api_access_list")
+                                 rules=["delete_api_access_list"])
     @decorators.idempotent_id('f27d9044-95f2-4733-81ed-df9340dbd421')
     def test_delete_api_access_list(self):
         """test method for delete api access list"""
@@ -122,7 +122,7 @@
                 new_api_list['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_access_control_lists")
+                                 rules=["list_access_control_lists"])
     @decorators.idempotent_id('c56a1338-a9d1-4286-8aeb-3a0d60d93037')
     def test_list_access_control_lists(self):
         """test method for list access control list"""
@@ -130,7 +130,7 @@
             self.access_control_client.list_access_control_lists()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_access_control_lists")
+                                 rules=["create_access_control_lists"])
     @decorators.idempotent_id('9f225d2b-5376-42f5-97aa-cf63be47fa19')
     def test_create_access_control(self):
         """test method for create access control list"""
@@ -140,7 +140,7 @@
             self._create_access_control_lists(sec_group['name'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_access_control_list")
+                                 rules=["show_access_control_list"])
     @decorators.idempotent_id('f0ed882b-f3de-48b7-884a-637ee0b7d6b6')
     def test_show_access_control_list(self):
         """test method for show access control list"""
@@ -153,7 +153,7 @@
                 new_ctrl_list['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_access_control_list")
+                                 rules=["update_access_control_list"])
     @decorators.idempotent_id('9a4b3133-dd07-4a1a-b282-f7770c372fb8')
     def test_update_access_control_list(self):
         """test method for update access control list"""
@@ -167,7 +167,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_access_control_list")
+                                 rules=["delete_access_control_list"])
     @decorators.idempotent_id('36a8ace1-71ca-4c7c-8667-d8387d6f964a')
     def test_delete_access_control_list(self):
         """test method for delete access control list"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_alarm.py b/tungsten_tempest_plugin/tests/api/contrail/test_alarm.py
index c2ef808..fa76dd4 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_alarm.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_alarm.py
@@ -83,7 +83,7 @@
         self.alarm_client.update_alarm(alarm_uuid, **put_body)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_alarms")
+                                 rules=["list_alarms"])
     @decorators.idempotent_id('dc7d19dd-dd5e-4ec8-bf0c-c6d9d83a60a8')
     def test_list_alarms(self):
         """test method for list alarms"""
@@ -91,7 +91,7 @@
             self.alarm_client.list_alarms()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_alarms")
+                                 rules=["create_alarms"])
     @decorators.idempotent_id('7fe55d0c-e54a-4bb7-95a6-9c53f9e9c4bf')
     def test_create_alarms(self):
         """test method for create alarms"""
@@ -101,7 +101,7 @@
             self._create_alarm(global_system_config)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_alarm")
+                                 rules=["show_alarm"])
     @decorators.idempotent_id('ab0ccbe4-7bfe-4176-890a-d438ee04290d')
     def test_show_alarm(self):
         """test method for show alarms"""
@@ -112,7 +112,7 @@
             self.alarm_client.show_alarm(alarm_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_alarm")
+                                 rules=["update_alarm"])
     @decorators.idempotent_id('ab331cca-ee53-4106-9b30-7319bfb1bea7')
     def test_update_alarm(self):
         """test method for update alarms"""
@@ -123,7 +123,7 @@
             self._update_alarm(alarm_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_alarm")
+                                 rules=["delete_alarm"])
     @decorators.idempotent_id('84fadb14-77c0-4f21-b5b2-1da7a2fd27e6')
     def test_delete_alarm(self):
         """test method for delete alarms"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_alias_ip.py b/tungsten_tempest_plugin/tests/api/contrail/test_alias_ip.py
index 2418333..1a67669 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_alias_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_alias_ip.py
@@ -112,7 +112,7 @@
         return new_alias_ip
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_alias_ips")
+                                 rules=["list_alias_ips"])
     @decorators.idempotent_id('899d6824-0755-41ef-adef-03eb1858bcb0')
     def test_list_alias_ips(self):
         """test method for list alias IP"""
@@ -120,7 +120,7 @@
             self.alias_ip_client.list_alias_ips()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_alias_ips")
+                                 rules=["create_alias_ips"])
     @decorators.idempotent_id('bc9aae29-22a8-4eed-a31f-c0ded300e3a3')
     def test_create_alias_ips(self):
         """test method for create alias IP"""
@@ -129,7 +129,7 @@
             self._create_alias_ips(new_alias_ip_pool, '2.2.3.1')
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_alias_ip")
+                                 rules=["show_alias_ip"])
     @decorators.idempotent_id('d20318b1-c204-44e7-a44c-66f6a1fbe7a0')
     def test_show_alias_ip(self):
         """test method for show alias IP"""
@@ -140,7 +140,7 @@
                 new_alias_ip['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_alias_ip")
+                                 rules=["update_alias_ip"])
     @decorators.idempotent_id('c237b18f-d899-4b80-8e9b-068244a24612')
     def test_update_alias_ip(self):
         """test method for update alias IP"""
@@ -153,7 +153,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_alias_ip")
+                                 rules=["delete_alias_ip"])
     @decorators.idempotent_id('456c641c-9066-4125-8dec-d1529ad8f1ba')
     def test_delete_alias_ip(self):
         """test method for delete alias IP"""
@@ -164,7 +164,7 @@
                 new_alias_ip['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_alias_ip_pools")
+                                 rules=["list_alias_ip_pools"])
     @decorators.idempotent_id('ffe85f35-589a-4b90-a1d3-6aed92a85954')
     def test_list_alias_ip_pools(self):
         """est method for list alias IP pools"""
@@ -172,7 +172,7 @@
             self.alias_ip_client.list_alias_ip_pools()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_alias_ip_pools")
+                                 rules=["create_alias_ip_pools"])
     @decorators.idempotent_id('83abd2c0-d46a-4337-87d0-31cdb86e4226')
     def test_create_alias_ip_pools(self):
         """test method for create alias IP pool"""
@@ -180,7 +180,7 @@
             self._create_alias_ip_pools()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_alias_ip_pool")
+                                 rules=["show_alias_ip_pool"])
     @decorators.idempotent_id('a1cbe111-ccba-4fa4-ba59-7d1ee08a15db')
     def test_show_alias_ip_pool(self):
         """test method for show alias IP pool"""
@@ -190,7 +190,7 @@
                 new_alias_ip_pool['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_alias_ip_pool")
+                                 rules=["update_alias_ip_pool"])
     @decorators.idempotent_id('7f3448d7-22f1-4808-b3eb-15eeb3f079aa')
     def test_update_alias_ip_pool(self):
         """test method for update alias IP pool"""
@@ -202,7 +202,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_alias_ip_pool")
+                                 rules=["delete_alias_ip_pool"])
     @decorators.idempotent_id('f59ea4fb-d10f-40c8-a8fa-dcd948ca89c8')
     def test_delete_alias_ip_pool(self):
         """test method for delete alias IP pool"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_analytics_node.py b/tungsten_tempest_plugin/tests/api/contrail/test_analytics_node.py
index 23b1fcc..85dedeb 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_analytics_node.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_analytics_node.py
@@ -61,7 +61,7 @@
         return new_node
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_analytics_nodes")
+                                 rules=["list_analytics_nodes"])
     @decorators.idempotent_id('d3002e37-4b42-446d-b144-1b53f0dadfd3')
     def test_list_analytics_nodes(self):
         """test method for list analytics nodes"""
@@ -69,7 +69,7 @@
             self.analytics_node_client.list_analytics_nodes()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_analytics_node")
+                                 rules=["show_analytics_node"])
     @decorators.idempotent_id('b51043fd-77ba-4312-b96f-569ed5153338')
     def test_show_analytics_node(self):
         """test method for show analytics nodes"""
@@ -80,7 +80,7 @@
             self.analytics_node_client.show_analytics_node(new_node['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_analytics_nodes")
+                                 rules=["create_analytics_nodes"])
     @decorators.idempotent_id('c57482c9-fcb4-4f41-95b0-7f0ffeee3dc3')
     def test_create_analytics_nodes(self):
         """test method for create analytics nodes"""
@@ -90,7 +90,7 @@
             self._create_analytics_node(global_system_config)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_analytics_node")
+                                 rules=["update_analytics_node"])
     @decorators.idempotent_id('ff50a2df-6283-409e-ab03-c13b63acc8a0')
     def test_update_analytics_node(self):
         """test method for update analytics nodes"""
@@ -103,7 +103,7 @@
                 new_node['uuid'], display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_analytics_node")
+                                 rules=["delete_analytics_node"])
     @decorators.idempotent_id('972f997a-c89f-4227-8ae9-5a2335ec0b0a')
     def test_delete_analytics_node(self):
         """test method for delete analytics nodes"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_attachments_client.py b/tungsten_tempest_plugin/tests/api/contrail/test_attachments_client.py
index d13fcf4..0aaf63f 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_attachments_client.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_attachments_client.py
@@ -57,7 +57,7 @@
         return new_customer
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_provider_attachments")
+                                 rules=["list_provider_attachments"])
     @decorators.idempotent_id('961dbf54-ae4f-42e8-9d27-69fa7df39013')
     def test_list_provider_attachments(self):
         """test method for list provider attachment objects"""
@@ -65,7 +65,7 @@
             self.attachments_client.list_provider_attachments()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_provider_attachments")
+                                 rules=["create_provider_attachments"])
     @decorators.idempotent_id('73ad032e-3e81-4dcc-be55-1987484207cd')
     def test_create_providerattach(self):
         """test method for create provider attachment objects"""
@@ -73,7 +73,7 @@
             self._create_provider_attachments()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_provider_attachment")
+                                 rules=["show_provider_attachment"])
     @decorators.idempotent_id('7b5278bc-dd79-495a-9f74-448c04f52bd2')
     def test_show_provider_attachment(self):
         """test method for delete provider attachment objects"""
@@ -83,7 +83,7 @@
                 new_provider['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_provider_attachment")
+                                 rules=["update_provider_attachment"])
     @decorators.idempotent_id('3516ff99-eddf-4932-afa4-433a43a0e5ac')
     def test_update_provider_attachment(self):
         """test method for update provider attachment objects"""
@@ -95,7 +95,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_provider_attachment")
+                                 rules=["delete_provider_attachment"])
     @decorators.idempotent_id('234d5505-2abf-418b-b43b-ea6f5a724fd3')
     def test_delete_provider_attachment(self):
         """test method for delete provider attachment objects"""
@@ -105,7 +105,7 @@
                 new_provider['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_customer_attachments")
+                                 rules=["list_customer_attachments"])
     @decorators.idempotent_id('3eca8fd8-ec3c-4a0e-8f62-b15d28796b7f')
     def test_list_customer_attachments(self):
         """test method for list customer attachment objects"""
@@ -113,7 +113,7 @@
             self.attachments_client.list_customer_attachments()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_customer_attachments")
+                                 rules=["create_customer_attachments"])
     @decorators.idempotent_id('53f93053-554c-4202-b763-0230d9a0553a')
     def test_create_customerattachments(self):
         """test method for create customer attachment objects"""
@@ -121,7 +121,7 @@
             self._create_customer_attachments()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_customer_attachment")
+                                 rules=["show_customer_attachment"])
     @decorators.idempotent_id('c6671540-695c-4cba-bcee-4a5d1cddd412')
     def test_show_customer_attachment(self):
         """test method for show customer attachment objects"""
@@ -131,7 +131,7 @@
                 new_customer['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_customer_attachment")
+                                 rules=["update_customer_attachment"])
     @decorators.idempotent_id('50419cca-dd03-4d02-9c06-88446647fcba')
     def test_update_customer_attachment(self):
         """test method for update customer attachment objects"""
@@ -143,7 +143,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_customer_attachment")
+                                 rules=["delete_customer_attachment"])
     @decorators.idempotent_id('5385c275-8e86-4739-9cb6-d1e0ed522807')
     def test_delete_customer_attachment(self):
         """test method for delete customer attachment objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_bgp_as_a_service.py b/tungsten_tempest_plugin/tests/api/contrail/test_bgp_as_a_service.py
index 40b9fe0..330483f 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_bgp_as_a_service.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_bgp_as_a_service.py
@@ -42,7 +42,7 @@
         return new_bgp
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_bgp_as_a_services")
+                                 rules=["list_bgp_as_a_services"])
     @decorators.idempotent_id('d3153cd0-379e-4e62-9780-ef237e567fc5')
     def test_list_bgp_as_a_services(self):
         """test method for list bgp as a service objects"""
@@ -50,7 +50,7 @@
             self.bgp_as_a_service_client.list_bgp_as_a_services()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_bgp_as_a_services")
+                                 rules=["create_bgp_as_a_services"])
     @decorators.idempotent_id('a039f0c4-b53a-492b-a5c5-fbdf046afcf4')
     def test_create_bgp_as_a_services(self):
         """test method for create bgp as a service objects"""
@@ -58,7 +58,7 @@
             self._create_bgp_as_a_services()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_bgp_as_a_service")
+                                 rules=["show_bgp_as_a_service"])
     @decorators.idempotent_id('c2fae8b4-929c-4d2f-914d-76a7414a56dc')
     def test_show_bgp_as_a_service(self):
         """test method for show bgp as a service objects"""
@@ -68,7 +68,7 @@
                 new_bgp['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_bgp_as_a_service")
+                                 rules=["delete_bgp_as_a_service"])
     @decorators.idempotent_id('78c8389a-7bb5-4027-bae1-923af3d6e77c')
     def test_delete_bgp_as_a_service(self):
         """test method for delete bgp as a service objects"""
@@ -78,7 +78,7 @@
                 new_bgp['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_bgp_as_a_service")
+                                 rules=["update_bgp_as_a_service"])
     @decorators.idempotent_id('38ba2ecb-71e2-4a2f-be43-e82491dffa05')
     def test_update_bgp_as_a_service(self):
         """test method for update bgp as a service objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_config_client.py b/tungsten_tempest_plugin/tests/api/contrail/test_config_client.py
index d5aa1fb..98ee4e9 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_config_client.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_config_client.py
@@ -55,7 +55,7 @@
         return config_node
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_config_nodes")
+                                 rules=["list_config_nodes"])
     @decorators.idempotent_id('b560e060-e4f0-45b0-93e2-55f0cb201e06')
     def test_list_config_nodes(self):
         """test method for list config node objects"""
@@ -63,7 +63,7 @@
             self.config_client.list_config_nodes()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_config_nodes")
+                                 rules=["create_config_nodes"])
     @decorators.idempotent_id('a8d20d0d-dc5a-4cae-87c5-7f6914c3701e')
     def test_create_config_nodes(self):
         """test method for create config node objects"""
@@ -71,7 +71,7 @@
             self._create_config_node()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_config_node")
+                                 rules=["delete_config_node"])
     @decorators.idempotent_id('16573a85-57ab-418c-bb23-5dd936e7be90')
     def test_delete_config_node(self):
         """test method for delete config node objects"""
@@ -82,7 +82,7 @@
                 config_node_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_config_node")
+                                 rules=["show_config_node"])
     @decorators.idempotent_id('a5b17108-4fa3-4d09-b861-e2857aab8f80')
     def test_show_config_node(self):
         """test method for show config node objects"""
@@ -92,7 +92,7 @@
             self.config_client.show_config_node(config_node_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_config_node")
+                                 rules=["update_config_node"])
     @decorators.idempotent_id('8f70d2c0-594b-4a94-ab15-88bd8a2e62e5')
     def test_update_config_node(self):
         """test method for update config node objects"""
@@ -120,7 +120,7 @@
         return config_root
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_config_roots")
+                                 rules=["create_config_roots"])
     @decorators.idempotent_id('291b28ea-d0d8-47cd-ac76-1f980047cb76')
     def test_create_config_roots(self):
         """test method for create config root service objects"""
@@ -128,7 +128,7 @@
             self._create_config_root()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_config_root")
+                                 rules=["delete_config_root"])
     @decorators.idempotent_id('bd04c0fb-3deb-4904-ad2c-1a10933c30dd')
     def test_delete_config_root(self):
         """test method for delete config root service objects"""
@@ -139,7 +139,7 @@
                 config_root_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_config_root")
+                                 rules=["show_config_root"])
     @decorators.idempotent_id('fba2c419-9a83-4d88-9a26-84770544bb3f')
     def test_show_config_root(self):
         """test method for show config root service objects"""
@@ -149,7 +149,7 @@
             self.config_client.show_config_root(config_root_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_config_root")
+                                 rules=["update_config_root"])
     @decorators.idempotent_id('bfcc074f-5e1c-4b45-8a2a-857239f8acb0')
     def test_update_config_root(self):
         """test method for update config root service objects"""
@@ -161,7 +161,7 @@
                 config_root_uuid, display_name=updated_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_config_roots")
+                                 rules=["list_config_roots"])
     @decorators.idempotent_id('316e7425-8fb0-41b4-9080-a76697abbafa')
     def test_list_config_roots(self):
         """test method for list config root service objects"""
@@ -188,7 +188,7 @@
         return new_config
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_global_system_configs")
+                                 rules=["list_global_system_configs"])
     @decorators.idempotent_id('d1d189a7-14c1-49c5-b180-cd42ed2ca123')
     def test_list_global_system_configs(self):
         """test method for list global system config service objects"""
@@ -196,7 +196,7 @@
             self.config_client.list_global_system_configs()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_global_system_configs")
+                                 rules=["create_global_system_configs"])
     @decorators.idempotent_id('e0ba6a20-3e28-47ac-bf95-9a848fcee49a')
     def test_create_global_sys_configs(self):
         """test method for create global system config service objects"""
@@ -204,7 +204,7 @@
             self._create_global_system_config()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_global_system_config")
+                                 rules=["show_global_system_config"])
     @decorators.idempotent_id('4b9f9131-cb34-4b7d-9d06-c6aca85cce3a')
     def test_show_global_system_config(self):
         """test method for show global system config service objects"""
@@ -214,7 +214,7 @@
                 new_config['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_global_system_config")
+                                 rules=["update_global_system_config"])
     @decorators.idempotent_id('4f90dc83-da59-45a4-8ab6-b387bd6c2df4')
     def test_update_global_sys_config(self):
         """test method for update global system config service objects"""
@@ -226,7 +226,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_global_system_config")
+                                 rules=["delete_global_system_config"])
     @decorators.idempotent_id('fce1653c-e657-4a1e-8ced-7e02d297d6c9')
     def test_delete_global_sys_config(self):
         """test method for delete global system config service objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_database.py b/tungsten_tempest_plugin/tests/api/contrail/test_database.py
index 502eacb..d6c7d96 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_database.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_database.py
@@ -67,7 +67,7 @@
         return db_node
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_database_nodes")
+                                 rules=["list_database_nodes"])
     @decorators.idempotent_id('5ae6f965-6161-443f-b19e-dfa7b364c533')
     def test_list_database_nodes(self):
         """test method for list database objects"""
@@ -78,7 +78,7 @@
             self.db_client.list_database_nodes()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_database_node")
+                                 rules=["show_database_node"])
     @decorators.idempotent_id('4a07d9a8-7b99-43bd-b628-06c023993aab')
     def test_show_database_node(self):
         """test method for show database objects"""
@@ -90,7 +90,7 @@
             self.db_client.show_database_node(db_node_id)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_database_nodes")
+                                 rules=["create_database_nodes"])
     @decorators.idempotent_id('b9aa9c6b-9381-44f0-94fb-e4523bf2a87e')
     def test_create_database_nodes(self):
         """test method for update database objects"""
@@ -100,7 +100,7 @@
             self._create_database_node(global_system_config)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_database_node")
+                                 rules=["update_database_node"])
     @decorators.idempotent_id('6e59f393-0e55-4327-871e-7f0ad53f2e17')
     def test_update_database_node(self):
         """test method for update database objects"""
@@ -115,7 +115,7 @@
                 display_name=display_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_database_node")
+                                 rules=["delete_database_node"])
     @decorators.idempotent_id('0cbc5a52-d7e7-4a1c-a85d-6bf44012d99b')
     def test_delete_database_node(self):
         """test method for delete database objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_discovery_service_assignment.py b/tungsten_tempest_plugin/tests/api/contrail/test_discovery_service_assignment.py
index 9063003..f630d70 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_discovery_service_assignment.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_discovery_service_assignment.py
@@ -43,7 +43,7 @@
         return new_dsa
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_discovery_service_assignments")
+                                 rules=["list_discovery_service_assignments"])
     @decorators.idempotent_id('9ac1e4ca-8983-403f-b644-7758935f2f36')
     def test_list_discovery_service(self):
         """test method for list discovery service assignment objects"""
@@ -51,7 +51,8 @@
             self.dsa_client.list_ds_assignments()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_discovery_service_assignments")
+                                 rules=["create_discovery_service_assignments"]
+                                 )
     @decorators.idempotent_id('40ad1208-a039-4809-8516-41b4dfcbd00c')
     def test_create_discovery_service(self):
         """test method for create discovery service assignment objects"""
@@ -59,7 +60,7 @@
             self._create_discovery_service_assignments()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_discovery_service_assignment")
+                                 rules=["show_discovery_service_assignment"])
     @decorators.idempotent_id('63660fe9-22b8-456c-a757-a7da1abfbce8')
     def test_show_discovery_service(self):
         """test method for show discovery service assignment objects"""
@@ -68,7 +69,7 @@
             self.dsa_client.show_ds_assignment(new_dsa['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_discovery_service_assignment")
+                                 rules=["update_discovery_service_assignment"])
     @decorators.idempotent_id('71ce1404-965b-4670-abb7-5b6fea3b24b7')
     def test_update_discovery_service(self):
         """test method for update discovery service assignment objects"""
@@ -81,7 +82,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_discovery_service_assignment")
+                                 rules=["delete_discovery_service_assignment"])
     @decorators.idempotent_id('e7ff845d-2140-4eb0-9720-26370459723b')
     def test_delete_discovery_service(self):
         """test method for delete discovery service assignment objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_domain.py b/tungsten_tempest_plugin/tests/api/contrail/test_domain.py
index d550bfb..7547cad 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_domain.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_domain.py
@@ -52,7 +52,7 @@
         self.domain_client.update_domain(domain_uuid, **put_body)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_domains")
+                                 rules=["list_domains"])
     @decorators.idempotent_id('fa02e27b-f661-4186-a522-69e8fcb6abf9')
     def test_list_domains(self):
         """test method for list domain objects"""
@@ -60,7 +60,7 @@
             self.domain_client.list_domains()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_domains")
+                                 rules=["create_domains"])
     @decorators.idempotent_id('3f18be91-c37b-4e17-bf5e-b704d993f738')
     def test_create_domains(self):
         """test method for create domain objects"""
@@ -68,7 +68,7 @@
             self._create_domains()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_domain")
+                                 rules=["show_domain"])
     @decorators.idempotent_id('e79f8581-ba9f-420a-aa26-f1cb51cf4bbf')
     def test_show_domain(self):
         """test method for show domain objects"""
@@ -77,7 +77,7 @@
             self.domain_client.show_domain(domain_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_domain")
+                                 rules=["update_domain"])
     @decorators.idempotent_id('fdf72539-20b5-4bdb-b22b-70c86fbb52a4')
     def test_update_domain(self):
         """test method for update domain objects"""
@@ -86,7 +86,7 @@
             self._update_domain(domain_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_domain")
+                                 rules=["delete_domain"])
     @decorators.idempotent_id('abaad2b0-6bde-40b8-b257-20ca805c1dca')
     def test_delete_domain(self):
         """test method for delete domain objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_dsa_rule.py b/tungsten_tempest_plugin/tests/api/contrail/test_dsa_rule.py
index af3cab2..ff028f4 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_dsa_rule.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_dsa_rule.py
@@ -56,7 +56,7 @@
         return new_rule
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_dsa_rules")
+                                 rules=["list_dsa_rules"])
     @decorators.idempotent_id('3227673b-96fc-4d26-ab0b-109347e9e9c2')
     def test_list_dsa_rules(self):
         """test method for list dsa rules objects"""
@@ -64,7 +64,7 @@
             self.dsa_rule_client.list_dsa_rules()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_dsa_rule")
+                                 rules=["show_dsa_rule"])
     @decorators.idempotent_id('0f90ea4f-c050-4c31-93a7-1e0c58df914e')
     def test_show_dsa_rule(self):
         """test method for show dsa rules objects"""
@@ -76,7 +76,7 @@
             self.dsa_rule_client.show_dsa_rule(new_rule['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_dsa_rules")
+                                 rules=["create_dsa_rules"])
     @decorators.idempotent_id('c3774ca3-45d0-4ca8-a6b3-f895441b1d0e')
     def test_create_dsa_rules(self):
         """test method for create dsa rules objects"""
@@ -87,7 +87,7 @@
             self._create_dsa_rules(discovery_service_assignment)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_dsa_rule")
+                                 rules=["update_dsa_rule"])
     @decorators.idempotent_id('5cfe7e8e-d91c-4183-8e6c-733e826707be')
     def test_update_dsa_rule(self):
         """test method for update dsa rules objects"""
@@ -101,7 +101,7 @@
                 new_rule['uuid'], display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_dsa_rule")
+                                 rules=["delete_dsa_rule"])
     @decorators.idempotent_id('d3b869db-fa49-48f0-861a-08efd9879b15')
     def test_delete_dsa_rule(self):
         """test method for delete dsa rules objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_floating_ip.py b/tungsten_tempest_plugin/tests/api/contrail/test_floating_ip.py
index a3c5752..80cd938 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_floating_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_floating_ip.py
@@ -106,7 +106,7 @@
         return fip_pool
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_floating_ip_pools")
+                                 rules=["create_floating_ip_pools"])
     @decorators.idempotent_id('a83ca5e8-be4b-4161-869c-f981a724cf82')
     def test_create_floating_ip_pools(self):
         """test method for create floating IP pool objects"""
@@ -114,7 +114,7 @@
             self._create_floating_ip_pool()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_floating_ip_pools")
+                                 rules=["list_floating_ip_pools"])
     @decorators.idempotent_id('9d20e78d-0463-4a0e-b30c-40770bee35bc')
     def test_list_floating_ip_pools(self):
         """test method for list floating IP pool objects"""
@@ -123,7 +123,7 @@
             self.fip_client.list_floating_ip_pools()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_floating_ip_pool")
+                                 rules=["show_floating_ip_pool"])
     @decorators.idempotent_id('1ec3124c-c15c-4ee6-b2de-2feed9599e38')
     def test_show_floating_ip_pool(self):
         """test method for show floating IP pool objects"""
@@ -132,7 +132,7 @@
             self.fip_client.show_floating_ip_pool(uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_floating_ip_pool")
+                                 rules=["update_floating_ip_pool"])
     @decorators.idempotent_id('6563f2e7-ae6b-483b-8c07-0111efc86817')
     def test_update_floating_ip_pool(self):
         """test method for update floating IP pool objects"""
@@ -143,7 +143,7 @@
                 display_name='rbac-fip-pool-new-name')
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_floating_ip_pool")
+                                 rules=["delete_floating_ip_pool"])
     @decorators.idempotent_id('c4b449ae-2f12-49cf-9dec-2b21c143aff6')
     def test_delete_floating_ip_pool(self):
         """test method for delete floating IP pool objects"""
@@ -189,7 +189,7 @@
         return fip
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_floating_ips")
+                                 rules=["create_floating_ips"])
     @decorators.idempotent_id('ff05f70f-9db9-43cb-a5ce-38cbbef2c430')
     def test_create_floating_ips(self):
         """test method for create floating IP objects"""
@@ -197,7 +197,7 @@
             self._create_floating_ip()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_floating_ips")
+                                 rules=["list_floating_ips"])
     @decorators.idempotent_id('e56046f9-32f9-41ce-9c1b-b982997ac347')
     def test_list_floating_ips(self):
         """test method for list floating IP objects"""
@@ -206,7 +206,7 @@
             self.fip_client.list_floating_ips()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_floating_ip")
+                                 rules=["show_floating_ip"])
     @decorators.idempotent_id('293f2c26-4101-4a2f-86d4-feb2878bd511')
     def test_show_floating_ip(self):
         """test method for show floating IP objects"""
@@ -215,7 +215,7 @@
             self.fip_client.show_floating_ip(uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_floating_ip")
+                                 rules=["update_floating_ip"])
     @decorators.idempotent_id('a09283c9-73d3-42f7-876d-f33040686d6d')
     def test_update_floating_ip(self):
         """test method for update floating IP objects"""
@@ -226,7 +226,7 @@
                 display_name='rbac-fip-new-name')
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_floating_ip")
+                                 rules=["delete_floating_ip"])
     @decorators.idempotent_id('a26f162f-da56-4153-aed6-bffccba92bc7')
     def test_delete_floating_ip(self):
         """test method for delete floating IP objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_forwarding_class.py b/tungsten_tempest_plugin/tests/api/contrail/test_forwarding_class.py
index 5ca5831..c79d630 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_forwarding_class.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_forwarding_class.py
@@ -81,7 +81,7 @@
         return new_fclass
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_forwarding_classs")
+                                 rules=["list_forwarding_classs"])
     @decorators.idempotent_id('807a66fd-d4a4-472c-a13d-7ba590509e6e')
     def test_list_forwarding_classs(self):
         """test method for list forwarding classes objects"""
@@ -89,7 +89,7 @@
             self.forwarding_class_client.list_forwarding_classs()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_forwarding_class")
+                                 rules=["show_forwarding_class"])
     @decorators.idempotent_id('8ef21f71-72a4-4de9-af93-6e759aa463c0')
     def test_show_forwarding_class(self):
         """test method for show forwarding classes objects"""
@@ -105,7 +105,7 @@
                 new_fclass['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_forwarding_classs")
+                                 rules=["create_forwarding_classs"])
     @decorators.idempotent_id('d098859c-ad36-4385-8fb0-c00934a99b6f')
     def test_create_forwarding_classs(self):
         """test method for create forwarding classes objects"""
@@ -119,7 +119,7 @@
                                           global_qos_config)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_forwarding_class")
+                                 rules=["update_forwarding_class"])
     @decorators.idempotent_id('589dc03d-a25d-48be-9d9c-d3f92ff2cfc6')
     def test_update_forwarding_class(self):
         """test method for update forwarding classes objects"""
@@ -136,7 +136,7 @@
                 new_fclass['uuid'], display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_forwarding_class")
+                                 rules=["delete_forwarding_class"])
     @decorators.idempotent_id('a0348ffc-68c5-4d94-ba03-d08483503ced')
     def test_delete_forwarding_class(self):
         """test method for delete forwarding classes objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_fqname_id.py b/tungsten_tempest_plugin/tests/api/contrail/test_fqname_id.py
index bedd059..286ccb8 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_fqname_id.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_fqname_id.py
@@ -50,7 +50,7 @@
         super(FqnameIdTest, cls).resource_cleanup()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="fqname_to_id")
+                                 rules=["fqname_to_id"])
     @decorators.idempotent_id('1fc1350b-3146-49bc-9af5-a61a98b55541')
     def test_fqname_to_id(self):
         """test method for fqname to id rules objects"""
@@ -59,7 +59,7 @@
                                         type=self.type)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="id_to_fqname")
+                                 rules=["id_to_fqname"])
     @decorators.idempotent_id('ecdd77d7-8508-4639-86cd-b97907b363ff')
     def test_id_to_fqname(self):
         """test method for id to fqname rules objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_instance_ip.py b/tungsten_tempest_plugin/tests/api/contrail/test_instance_ip.py
index 4b0b453..a5d4e06 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_instance_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_instance_ip.py
@@ -101,7 +101,7 @@
         return iip
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_instance_ips")
+                                 rules=["list_instance_ips"])
     @decorators.idempotent_id('31db3b3f-c40b-4f7f-bb8b-0a110f099553')
     def test_list_instance_ips(self):
         """test method for list instance IP objects"""
@@ -110,7 +110,7 @@
             self.iip_client.list_instance_ips()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_instance_ips")
+                                 rules=["create_instance_ips"])
     @decorators.idempotent_id('78f5cd4d-345d-4d87-8b8b-4d5d3fec4a12')
     def test_create_instance_ips(self):
         """test method for create instance IP objects"""
@@ -118,7 +118,7 @@
             self._create_instance_ip()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_instance_ip")
+                                 rules=["show_instance_ip"])
     @decorators.idempotent_id('276f3838-d9cb-4432-bbb4-db31c4c1db5c')
     def test_show_instance_ip(self):
         """test method for update instance IP objects"""
@@ -127,7 +127,7 @@
             self.iip_client.show_instance_ip(uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_instance_ip")
+                                 rules=["update_instance_ip"])
     @decorators.idempotent_id('b85975a5-176f-44b1-a615-b6f0a39a7708')
     def test_update_instance_ip(self):
         """test method for update instance IP objects"""
@@ -138,7 +138,7 @@
                 display_name='rbac-iip-new-name')
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_instance_ip")
+                                 rules=["delete_instance_ip"])
     @decorators.idempotent_id('d9c1d400-1dfb-4adb-8d97-0e8b498226b7')
     def test_delete_instance_ip(self):
         """test method for delete instance IP objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_interfaces.py b/tungsten_tempest_plugin/tests/api/contrail/test_interfaces.py
index d14a878..697a210 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_interfaces.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_interfaces.py
@@ -89,7 +89,7 @@
         return logical_if
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_physical_interfaces")
+                                 rules=["list_physical_interfaces"])
     @decorators.idempotent_id('c496a2b4-51b2-4674-a60e-483a315baccb')
     def test_list_physical_interfaces(self):
         """test method for list physical interfaces objects"""
@@ -97,7 +97,7 @@
             self.interface_client.list_physical_interfaces()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_physical_interfaces")
+                                 rules=["create_physical_interfaces"])
     @decorators.idempotent_id('066f53d8-3d2a-4ad6-983f-243de7c12962')
     def test_create_physical_interfaces(self):
         """test method for create physical interfaces objects"""
@@ -107,7 +107,7 @@
             self._create_physical_interface()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_physical_interface")
+                                 rules=["update_physical_interface"])
     @decorators.idempotent_id('91c4fc90-ed0f-42ec-87c6-ff6c2a9ab8de')
     def test_update_physical_interface(self):
         """test method for update physical interfaces objects"""
@@ -125,7 +125,7 @@
                 uuid, **body)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_physical_interface")
+                                 rules=["delete_physical_interface"])
     @decorators.idempotent_id('5d77ea76-be8c-49cc-8f08-72fbdaf9028f')
     def test_delete_physical_interface(self):
         """test method for delete physical interfaces objects"""
@@ -136,7 +136,7 @@
             self.interface_client.delete_physical_interface(uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_physical_interface")
+                                 rules=["show_physical_interface"])
     @decorators.idempotent_id('2c75c7e7-ef34-4e24-9c2f-5a2182db33a6')
     def test_show_physical_interface(self):
         """test method for show physical interfaces objects"""
@@ -146,7 +146,7 @@
             self.interface_client.show_physical_interface(uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_logical_interfaces")
+                                 rules=["list_logical_interfaces"])
     @decorators.idempotent_id('43ac3727-4a43-42d7-b52f-df75018915b9')
     def test_list_logical_interfaces(self):
         """test method for list physical interfaces objects"""
@@ -154,7 +154,7 @@
             self.interface_client.list_logical_interfaces()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_logical_interfaces")
+                                 rules=["create_logical_interfaces"])
     @decorators.idempotent_id('503facf2-0752-47e4-a0a4-7a3103133a61')
     def test_create_logical_interfaces(self):
         """test method for create logical interfaces objects"""
@@ -164,7 +164,7 @@
             self._create_logical_interface()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_logical_interface")
+                                 rules=["update_logical_interface"])
     @decorators.idempotent_id('63c991f4-6aba-454c-9c49-522dc77b3f5c')
     def test_update_logical_interface(self):
         """test method for update logical interfaces objects"""
@@ -183,7 +183,7 @@
                 uuid, **body)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_logical_interface")
+                                 rules=["delete_logical_interface"])
     @decorators.idempotent_id('a36743d1-3ea1-4cf5-89d8-9c0b885fa625')
     def test_delete_logical_interface(self):
         """test method for update logical interfaces objects"""
@@ -194,7 +194,7 @@
             self.interface_client.delete_logical_interface(uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_logical_interface")
+                                 rules=["show_logical_interface"])
     @decorators.idempotent_id('f0f7fab7-eeb9-4d29-8415-31a50180fb44')
     def test_show_logical_interface(self):
         """test method for show logical interfaces objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_load_balancer.py b/tungsten_tempest_plugin/tests/api/contrail/test_load_balancer.py
index 568c7ff..c8f136d 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_load_balancer.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_load_balancer.py
@@ -165,7 +165,7 @@
     """Test class to test load balancer objects using RBAC roles"""
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_load_balancers")
+                                 rules=["list_load_balancers"])
     @decorators.idempotent_id('5d840b6b-3974-4945-916f-dd53ba27e42f')
     def test_list_load_balancers(self):
         """test method for list load balancer objects"""
@@ -173,7 +173,7 @@
             self.load_balancer_client.list_load_balancers()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_load_balancers")
+                                 rules=["create_load_balancers"])
     @decorators.idempotent_id('6a18d506-0794-4eb9-a945-165bf146005d')
     def test_create_load_balancers(self):
         """test method for create load balancer objects"""
@@ -181,7 +181,7 @@
             self._create_load_balancer()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_load_balancer")
+                                 rules=["show_load_balancer"])
     @decorators.idempotent_id('428012aa-cd0e-4702-89d2-459046d4bd5f')
     def test_show_load_balancer(self):
         """test method for show load balancer objects"""
@@ -190,7 +190,7 @@
             self.load_balancer_client.show_load_balancer(lb_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_load_balancer")
+                                 rules=["update_load_balancer"])
     @decorators.idempotent_id('7cd3d7b2-b149-40c1-a801-a6a8a660bd24')
     def test_update_load_balancer(self):
         """test method for update load balancer objects"""
@@ -199,7 +199,7 @@
             self._update_load_balancer(lb_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_load_balancer")
+                                 rules=["delete_load_balancer"])
     @decorators.idempotent_id('b28c6b11-d1b0-45d0-8942-638b6b590702')
     def test_delete_load_balancer(self):
         """test method for delete load balancer objects"""
@@ -214,7 +214,7 @@
     """
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_load_balancer_health_monitors")
+                                 rules=["list_load_balancer_health_monitors"])
     @decorators.idempotent_id('3e3d8bdc-3621-4c5e-8130-1187f445a4e6')
     def test_list_lb_health_monitors(self):
         """test method for list load balancer health monitor objects"""
@@ -222,7 +222,8 @@
             self.load_balancer_client.list_lb_healthmonitors()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_load_balancer_health_monitors")
+                                 rules=["create_load_balancer_health_monitors"]
+                                 )
     @decorators.idempotent_id('bddb93ad-d331-4bbc-bac6-2763cae4eb2c')
     def test_create_lb_health_monitors(self):
         """test method for create load balancer health monitor objects"""
@@ -230,7 +231,7 @@
             self._create_load_balancer_health_monitor()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_load_balancer_health_monitor")
+                                 rules=["show_load_balancer_health_monitor"])
     @decorators.idempotent_id('30d23994-1e3a-4a76-8f18-e00d0854412a')
     def test_show_lb_health_monitor(self):
         """test method for show load balancer health monitor objects"""
@@ -240,7 +241,7 @@
                 lb_hm_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_load_balancer_health_monitor")
+                                 rules=["update_load_balancer_health_monitor"])
     @decorators.idempotent_id('c32ba92c-3a69-4255-867a-1423c93faa6f')
     def test_update_lb_health_monitor(self):
         """test method for update load balancer health monitor objects"""
@@ -249,7 +250,7 @@
             self._update_load_balancer_health_monitor(lb_hm_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_load_balancer_health_monitor")
+                                 rules=["delete_load_balancer_health_monitor"])
     @decorators.idempotent_id('b4d7ea9d-fd8c-433b-96fc-c24866b3f6a7')
     def test_delete_lb_health_monitor(self):
         """test method for delete load balancer health monitor objects"""
@@ -263,7 +264,7 @@
     """Base class to test load balancer Listener objects using RBAC roles"""
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_load_balancer_listeners")
+                                 rules=["list_load_balancer_listeners"])
     @decorators.idempotent_id('7e02882f-0eab-41c2-b48a-bf71e083b912')
     def test_list_lb_listeners(self):
         """test method for list load balancer listener objects"""
@@ -271,7 +272,7 @@
             self.load_balancer_client.list_load_balancer_listeners()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_load_balancer_listeners")
+                                 rules=["create_load_balancer_listeners"])
     @decorators.idempotent_id('0551de87-fa4c-463f-8968-ec6f2a6098d0')
     def test_create_lb_listeners(self):
         """test method for create load balancer listener objects"""
@@ -279,7 +280,7 @@
             self._create_load_balancer_listener()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_load_balancer_listener")
+                                 rules=["show_load_balancer_listener"])
     @decorators.idempotent_id('ade38959-9506-4262-8d3c-5ba5eb63d85f')
     def test_show_lb_listener(self):
         """test method for show load balancer listener objects"""
@@ -289,7 +290,7 @@
                 lb_listener_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_load_balancer_listener")
+                                 rules=["update_load_balancer_listener"])
     @decorators.idempotent_id('e529e538-da31-4159-91c2-6c0a828282a4')
     def test_update_lb_listener(self):
         """test method for update load balancer listener objects"""
@@ -298,7 +299,7 @@
             self._update_load_balancer_listener(lb_listener_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_load_balancer_listener")
+                                 rules=["delete_load_balancer_listener"])
     @decorators.idempotent_id('feaf3e9a-ffd1-4327-ad7a-35f9e9e4989b')
     def test_delete_lb_listener(self):
         """test method for delete load balancer listener objects"""
@@ -312,7 +313,7 @@
     """Base class to test load balancer Pool objects using RBAC roles"""
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_load_balancer_pools")
+                                 rules=["list_load_balancer_pools"])
     @decorators.idempotent_id('3d177a9e-7067-4e9e-b4e8-0acc5887dff0')
     def test_list_load_balancer_pools(self):
         """test method for list load balancer pool objects"""
@@ -320,7 +321,7 @@
             self.load_balancer_client.list_load_balancer_pools()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_load_balancer_pools")
+                                 rules=["create_load_balancer_pools"])
     @decorators.idempotent_id('a52c6ec7-a996-4191-9a70-7879a211a711')
     def test_create_load_balancer_pools(self):
         """test method for create load balancer pool objects"""
@@ -328,7 +329,7 @@
             self._create_load_balancer_pool()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_load_balancer_pool")
+                                 rules=["show_load_balancer_pool"])
     @decorators.idempotent_id('7923da4e-53b1-4024-9a40-5bc91cee8e2d')
     def test_show_load_balancer_pool(self):
         """test method for show load balancer pool objects"""
@@ -337,7 +338,7 @@
             self.load_balancer_client.show_load_balancer_pool(lb_pool_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_load_balancer_pool")
+                                 rules=["update_load_balancer_pool"])
     @decorators.idempotent_id('391c0c5e-c218-4c98-9b58-6d2724ec4c20')
     def test_update_load_balancer_pool(self):
         """test method for update load balancer pool objects"""
@@ -346,7 +347,7 @@
             self._update_load_balancer_pool(lb_pool_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_load_balancer_pool")
+                                 rules=["delete_load_balancer_pool"])
     @decorators.idempotent_id('8b3617c0-4064-48f8-96b8-e2f996fce5c3')
     def test_delete_load_balancer_pool(self):
         """test method for delete load balancer pool objects"""
@@ -359,7 +360,7 @@
     """Base class to test load balancer Member using RBAC roles"""
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_load_balancer_members")
+                                 rules=["list_load_balancer_members"])
     @decorators.idempotent_id('b3c51463-8166-486a-a26e-0f7aeaa41e0f')
     def test_list_load_balancer_members(self):
         """test method for list load balancer member objects"""
@@ -367,7 +368,7 @@
             self.load_balancer_client.list_load_balancer_members()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_load_balancer_members")
+                                 rules=["create_load_balancer_members"])
     @decorators.idempotent_id('ad60688f-7a20-4dd5-8229-4076d85b9d55')
     def test_create_lb_members(self):
         """test method for create load balancer member objects"""
@@ -375,7 +376,7 @@
             self._create_load_balancer_member()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_load_balancer_member")
+                                 rules=["show_load_balancer_member"])
     @decorators.idempotent_id('917602ff-24d5-4a07-a6a6-5e5b9539bbf1')
     def test_show_load_balancer_member(self):
         """test method for show load balancer member objects"""
@@ -384,7 +385,7 @@
             self.load_balancer_client.show_load_balancer_member(lb_member_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_load_balancer_member")
+                                 rules=["update_load_balancer_member"])
     @decorators.idempotent_id('b1611005-5c77-4ac0-8fcc-4a035dfbaa84')
     def test_update_lb_member(self):
         """test method for update load balancer member objects"""
@@ -393,7 +394,7 @@
             self._update_load_balancer_member(lb_member_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_load_balancer_member")
+                                 rules=["delete_load_balancer_member"])
     @decorators.idempotent_id('dc21883a-a822-4d39-b815-4dfd6b505b0b')
     def test_delete_lb_member(self):
         """test method for delete load balancer member objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_namespace.py b/tungsten_tempest_plugin/tests/api/contrail/test_namespace.py
index 7d19d8a..1a62d31 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_namespace.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_namespace.py
@@ -52,7 +52,7 @@
         self.namespace_client.update_namespace(namespace_uuid, **put_body)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_namespaces")
+                                 rules=["list_namespaces"])
     @decorators.idempotent_id('e436390d-d669-4047-9838-421ea93e94be')
     def test_list_namespaces(self):
         """test method for list namespace objects"""
@@ -60,7 +60,7 @@
             self.namespace_client.list_namespaces()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_namespaces")
+                                 rules=["create_namespaces"])
     @decorators.idempotent_id('503ae445-7e67-4db6-989a-af0b7f9a7e95')
     def test_create_namespaces(self):
         """test method for create namespace objects"""
@@ -68,7 +68,7 @@
             self._create_namespace()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_namespace")
+                                 rules=["show_namespace"])
     @decorators.idempotent_id('f916971a-7c07-4386-b887-8b78d8a1e528')
     def test_show_namespace(self):
         """test method for show namespace objects"""
@@ -77,7 +77,7 @@
             self.namespace_client.show_namespace(namespace_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_namespace")
+                                 rules=["update_namespace"])
     @decorators.idempotent_id('3649f65a-922a-4b8a-9b8b-520c333e192e')
     def test_update_namespace(self):
         """test method for update namespace objects"""
@@ -86,7 +86,7 @@
             self._update_namespace(namespace_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_namespace")
+                                 rules=["delete_namespace"])
     @decorators.idempotent_id('80e736bf-fc7d-4274-8173-a50c883776a9')
     def test_delete_namespace(self):
         """test method for delete namespace objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_network_ipams.py b/tungsten_tempest_plugin/tests/api/contrail/test_network_ipams.py
index c0ede87..7465969 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_network_ipams.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_network_ipams.py
@@ -42,7 +42,7 @@
         return new_ipam
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_network_ipams")
+                                 rules=["list_network_ipams"])
     @decorators.idempotent_id('9ee2c4d8-3209-4ef8-86e1-0ecea2d4c5f2')
     def test_list_network_ipams(self):
         """test method for list n/w ipam objects"""
@@ -50,7 +50,7 @@
             self.network_ipams_client.list_network_ipams()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_network_ipams")
+                                 rules=["create_network_ipams"])
     @decorators.idempotent_id('ef2415ea-0810-413a-85a0-4508c9d7af91')
     def test_create_network_ipams(self):
         """test method for create n/w ipam objects"""
@@ -58,7 +58,7 @@
             self._create_network_ipams()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_network_ipam")
+                                 rules=["show_network_ipam"])
     @decorators.idempotent_id('527b19e5-068a-44e3-b175-b504eafeec6e')
     def test_show_network_ipam(self):
         """test method for show n/w ipam objects"""
@@ -67,7 +67,7 @@
             self.network_ipams_client.show_network_ipam(new_ipam['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_network_ipam")
+                                 rules=["delete_network_ipam"])
     @decorators.idempotent_id('118c1620-efb6-4cc6-8eb5-71bf8631d365')
     def test_delete_network_ipam(self):
         """test method for delete n/w ipam objects"""
@@ -76,7 +76,7 @@
             self.network_ipams_client.delete_network_ipam(new_ipam['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_network_ipam")
+                                 rules=["update_network_ipam"])
     @decorators.idempotent_id('44cbe2d9-583d-4215-964a-1c321f5e8d92')
     def test_update_network_ipam(self):
         """test method for update n/w ipam objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_network_policy.py b/tungsten_tempest_plugin/tests/api/contrail/test_network_policy.py
index 1dc9b40..c71ccbd 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_network_policy.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_network_policy.py
@@ -54,7 +54,7 @@
                                                          **put_body)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_network_policys")
+                                 rules=["list_network_policys"])
     @decorators.idempotent_id('fa2a28f3-a8bb-4908-95b9-1e11cf58b16f')
     def test_list_policys(self):
         """test method for list n/w policy objects"""
@@ -62,7 +62,7 @@
             self.network_policy_client.list_network_policys()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_network_policys")
+                                 rules=["create_network_policys"])
     @decorators.idempotent_id('a30be228-afba-40c9-8678-ae020db68d79')
     def test_create_network_policys(self):
         """test method for create n/w policy objects"""
@@ -70,7 +70,7 @@
             self._create_policy()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_network_policy")
+                                 rules=["show_network_policy"])
     @decorators.idempotent_id('6cefe92e-8936-49a6-bce0-12da3396e7ab')
     def test_show_network_policy(self):
         """test method for show n/w policy objects"""
@@ -79,7 +79,7 @@
             self.network_policy_client.show_network_policy(policy_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_network_policy")
+                                 rules=["update_network_policy"])
     @decorators.idempotent_id('1d470505-3ad4-4870-87d7-3f0b0f9fc635')
     def test_update_network_policy(self):
         """test method for update n/w policy objects"""
@@ -88,7 +88,7 @@
             self._update_policy(policy_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_network_policy")
+                                 rules=["delete_network_policy"])
     @decorators.idempotent_id('aae9018f-e7a2-4a75-a68e-afd6c380640e')
     def test_delete_network_policy(self):
         """test method for delete n/w policy objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_port_tuple.py b/tungsten_tempest_plugin/tests/api/contrail/test_port_tuple.py
index e276c9b..d9d1b27 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_port_tuple.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_port_tuple.py
@@ -70,7 +70,7 @@
         return new_tuple
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_port_tuples")
+                                 rules=["list_port_tuples"])
     @decorators.idempotent_id('3789eef8-0e80-4057-b7b0-926655144beb')
     def test_list_port_tuples(self):
         """test method for list port tuple objects"""
@@ -78,7 +78,7 @@
             self.port_tuple_client.list_port_tuples()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_port_tuple")
+                                 rules=["show_port_tuple"])
     @decorators.idempotent_id('ae5a90ed-5771-4680-be6b-c7626caa3a52')
     def test_show_port_tuple(self):
         """test method for show port tuple objects"""
@@ -87,7 +87,7 @@
             self.port_tuple_client.show_port_tuple(new_tuple['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_port_tuples")
+                                 rules=["create_port_tuples"])
     @decorators.idempotent_id('0e2283da-fe25-4204-b5b3-fef3c200d0c8')
     def test_create_port_tuples(self):
         """test method for create port tuple objects"""
@@ -95,7 +95,7 @@
             self._create_port_tuple()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_port_tuple")
+                                 rules=["update_port_tuple"])
     @decorators.idempotent_id('b16f19e2-ec8e-4107-961d-561890183dd0')
     def test_update_port_tuple(self):
         """test method for update port tuple objects"""
@@ -106,7 +106,7 @@
                 new_tuple['uuid'], display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_port_tuple")
+                                 rules=["delete_port_tuple"])
     @decorators.idempotent_id('3f28e8b8-f9de-437f-a398-0a11c7fcd652')
     def test_delete_port_tuple(self):
         """test method for delete port tuple objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_project.py b/tungsten_tempest_plugin/tests/api/contrail/test_project.py
index e5a773f..d14174f 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_project.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_project.py
@@ -53,7 +53,7 @@
         self.project_client.update_project(project_uuid, **put_body)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_projects")
+                                 rules=["list_projects"])
     @decorators.idempotent_id('7db819fd-ceee-4a6b-9ad7-2e837c055bdd')
     def test_list_projects(self):
         """test method for list project objects"""
@@ -61,7 +61,7 @@
             self.project_client.list_projects()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_projects")
+                                 rules=["create_projects"])
     @decorators.idempotent_id('38b9b7a8-1568-417d-b0a3-e7adee88e4b9')
     def test_create_projects(self):
         """test method for create project objects"""
@@ -69,7 +69,7 @@
             self._create_project()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_project")
+                                 rules=["show_project"])
     @decorators.idempotent_id('c47e57c4-34b0-46c2-a678-83b1fe9afd25')
     def test_show_project(self):
         """test method for show project objects"""
@@ -78,7 +78,7 @@
             self.project_client.show_project(project_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_project")
+                                 rules=["update_project"])
     @decorators.idempotent_id('3d4bd416-16cc-437c-9e95-f9ceda424f8b')
     def test_update_project(self):
         """test method for update project objects"""
@@ -87,7 +87,7 @@
             self._update_project(project_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_project")
+                                 rules=["delete_project"])
     @decorators.idempotent_id('787ebe8b-b88d-4488-b157-f70554bdd783')
     def test_delete_project(self):
         """test method for delete project objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_qos_config.py b/tungsten_tempest_plugin/tests/api/contrail/test_qos_config.py
index 4ea40a3..5407278 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_qos_config.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_qos_config.py
@@ -48,7 +48,7 @@
         return qos_config
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_qos_configs")
+                                 rules=["list_qos_configs"])
     @decorators.idempotent_id('6bc44b34-14d4-4e0e-b45d-fe3df047879f')
     def test_list_qos_configs(self):
         """test method for list QoS config objects"""
@@ -57,7 +57,7 @@
             self.qos_client.list_qos_configs()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_qos_configs")
+                                 rules=["create_qos_configs"])
     @decorators.idempotent_id('031b4a27-22cd-4d93-938d-ba6d0f3163ba')
     def test_create_qos_configs(self):
         """test method for create QoS config objects"""
@@ -65,7 +65,7 @@
             self._create_qos_configs()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_qos_config")
+                                 rules=["show_qos_config"])
     @decorators.idempotent_id('a9d82b49-3492-4667-b252-ef30b0ee6eb3')
     def test_show_qos_config(self):
         """test method for show QoS config objects"""
@@ -74,7 +74,7 @@
             self.qos_client.show_qos_config(qos_config['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_qos_config")
+                                 rules=["delete_qos_config"])
     @decorators.idempotent_id('d324a5e6-cc86-4444-91a2-74592283a7ec')
     def test_delete_qos_config(self):
         """test method for delete QoS config objects"""
@@ -83,7 +83,7 @@
             self.qos_client.delete_qos_config(qos_config['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_qos_config")
+                                 rules=["update_qos_config"])
     @decorators.idempotent_id('7f1901a5-0cf0-40bd-98a5-f8a930b11cfe')
     def test_update_qos_config(self):
         """test method for update QoS config objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_qos_global_config.py b/tungsten_tempest_plugin/tests/api/contrail/test_qos_global_config.py
index 7f26b9a..6b5a3ec 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_qos_global_config.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_qos_global_config.py
@@ -68,7 +68,7 @@
         return qos_global_config
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_global_qos_configs")
+                                 rules=["list_global_qos_configs"])
     @decorators.idempotent_id('74e5a7b7-f538-4be3-90a5-6862b07fb118')
     def test_list_global_qos_configs(self):
         """test method for list global QoS objects"""
@@ -79,7 +79,7 @@
             self.qos_client.list_global_qos_configs()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_global_qos_configs")
+                                 rules=["create_global_qos_configs"])
     @decorators.idempotent_id('d7da1ca0-7bf7-4d1b-982c-820cd37fe9fa')
     def test_create_global_qos_configs(self):
         """test method for create global QoS objects"""
@@ -89,7 +89,7 @@
             self._create_qos_global_configs(global_system_config)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_global_qos_config")
+                                 rules=["show_global_qos_config"])
     @decorators.idempotent_id('e3bd44e0-19a9-46e7-83d3-268dcc537ad9')
     def test_show_global_qos_config(self):
         """test method for show global QoS objects"""
@@ -100,7 +100,7 @@
             self.qos_client.show_global_qos_config(instance_id=test['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_global_qos_config")
+                                 rules=["update_global_qos_config"])
     @decorators.idempotent_id('f834c4d7-bc81-4c59-bada-c4d752219a6e')
     def test_update_global_qos_config(self):
         """test method for update global QoS objects"""
@@ -114,7 +114,7 @@
                 display_name=display_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_global_qos_config")
+                                 rules=["delete_global_qos_config"])
     @decorators.idempotent_id('78b9a3da-4eb1-4f4b-8a23-a8a2e733b515')
     def test_delete_global_qos_config(self):
         """test method for delete global QoS objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_qos_queue.py b/tungsten_tempest_plugin/tests/api/contrail/test_qos_queue.py
index 8f56fb2..b223ea9 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_qos_queue.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_qos_queue.py
@@ -46,7 +46,7 @@
         return qos_queue
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_qos_queues")
+                                 rules=["list_qos_queues"])
     @decorators.idempotent_id('3d3a4397-2afe-4bbd-be59-56a1bcc2e49d')
     def test_list_qos_queues(self):
         """test method for listing QoS queues"""
@@ -55,7 +55,7 @@
             self.qos_client.list_qos_queues()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_qos_queues")
+                                 rules=["create_qos_queues"])
     @decorators.idempotent_id('d89c45f4-c83c-47b3-8720-7feffab4519c')
     def test_create_qos_queues(self):
         """test method for creating QoS queues"""
@@ -63,7 +63,7 @@
             self._create_qos_queues()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_qos_queue")
+                                 rules=["show_qos_queue"])
     @decorators.idempotent_id('d2773d5c-9858-4938-8a77-62cafd5034da')
     def test_show_qos_queue(self):
         """test method for showing QoS queues"""
@@ -72,7 +72,7 @@
             self.qos_client.show_qos_queue(qos_queue['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_qos_queue")
+                                 rules=["delete_qos_queue"])
     @decorators.idempotent_id('64c828d0-6594-472b-a504-40915067c7bd')
     def test_delete_qos_queue(self):
         """test method for deleting QoS queues"""
@@ -81,7 +81,7 @@
             self.qos_client.delete_qos_queue(qos_queue['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_qos_queue")
+                                 rules=["update_qos_queue"])
     @decorators.idempotent_id('0733ab1a-f5aa-4e70-a011-174aa203dc33')
     def test_update_qos_queue(self):
         """test method for deleting QoS queues"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_route.py b/tungsten_tempest_plugin/tests/api/contrail/test_route.py
index 1f389d3..7a34b33 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_route.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_route.py
@@ -50,7 +50,7 @@
         return route_table
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_route_tables")
+                                 rules=["list_route_tables"])
     @decorators.idempotent_id('ca5a5d42-6e49-40e4-a5ac-de07b397b775')
     def test_list_route_tables(self):
         """test method for list route table objects"""
@@ -59,7 +59,7 @@
             self.route_client.list_route_tables()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_route_table")
+                                 rules=["show_route_table"])
     @decorators.idempotent_id('084a2759-991a-4ae2-bde4-8f9915966f6e')
     def test_show_route_table(self):
         """test method for show route table objects"""
@@ -68,7 +68,7 @@
             self.route_client.show_route_table(route_table['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_route_tables")
+                                 rules=["create_route_tables"])
     @decorators.idempotent_id('3fab8105-c0be-4c9e-be5f-d2dce4deb921')
     def test_create_route_tables(self):
         """test method for create route table objects"""
@@ -76,7 +76,7 @@
             self._create_route_tables()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_route_table")
+                                 rules=["update_route_table"])
     @decorators.idempotent_id('2acee7ad-843e-40b0-b8f8-a6d90a51c6c8')
     def test_update_route_table(self):
         """test method for update route table objects"""
@@ -88,7 +88,7 @@
                 display_name=display_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_route_table")
+                                 rules=["delete_route_table"])
     @decorators.idempotent_id('20a5086c-ec9a-43e0-ae2c-4161c0f4b280')
     def test_delete_route_table(self):
         """test method for delete route table objects"""
@@ -118,7 +118,7 @@
         return interface_route_table
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_interface_route_tables")
+                                 rules=["list_interface_route_tables"])
     @decorators.idempotent_id('b1f8f0a6-6074-4615-a439-19869a48bc49')
     def test_list_interface_route(self):
         """test method for list route interface table objects"""
@@ -127,7 +127,7 @@
             self.route_client.list_interface_route_tables()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_interface_route_table")
+                                 rules=["show_interface_route_table"])
     @decorators.idempotent_id('94703a28-5e33-4003-b95b-6a3cc5752fd4')
     def test_show_interface_route(self):
         """test method for show route interface table objects"""
@@ -137,7 +137,7 @@
                 interface_rte_table['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_interface_route_tables")
+                                 rules=["create_interface_route_tables"])
     @decorators.idempotent_id('b89ef437-4759-4c04-948b-d2ff9675ab07')
     def test_create_interface_route(self):
         """test method for create route interface table objects"""
@@ -145,7 +145,7 @@
             self._create_interface_route_tables()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_interface_route_table")
+                                 rules=["update_interface_route_table"])
     @decorators.idempotent_id('e9346d4f-7a07-41bc-8e88-e8ae9fa309ea')
     def test_update_interface_route(self):
         """test method for update route interface table objects"""
@@ -157,7 +157,7 @@
                 display_name=display_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_interface_route_table")
+                                 rules=["delete_interface_route_table"])
     @decorators.idempotent_id('b00444a5-cb4c-45bc-b393-503e9e333e98')
     def test_delete_interface_route(self):
         """test method for delete route interface table objects"""
@@ -188,7 +188,7 @@
         return route_target
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_route_targets")
+                                 rules=["list_route_targets"])
     @decorators.idempotent_id('757efd07-8027-4a16-887a-1e42f16b4140')
     def test_list_route_targets(self):
         """test method for list route target objects"""
@@ -197,7 +197,7 @@
             self.route_client.list_route_targets()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_route_target")
+                                 rules=["show_route_target"])
     @decorators.idempotent_id('76c60d98-dd5e-453a-bf0e-7854f78a1a5e')
     def test_show_route_target(self):
         """test method for show route target objects"""
@@ -206,7 +206,7 @@
             self.route_client.show_route_target(target['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_route_targets")
+                                 rules=["create_route_targets"])
     @decorators.idempotent_id('fcdb4ebc-b92d-49f2-88e9-68c93aec94be')
     def test_create_route_targets(self):
         """test method for create route target objects"""
@@ -214,7 +214,7 @@
             self._create_route_targets()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_route_target")
+                                 rules=["update_route_target"])
     @decorators.idempotent_id('dd830a77-4bfe-4a8c-b4e9-08b6ef2af3be')
     def test_update_route_target(self):
         """test method for update route target objects"""
@@ -226,7 +226,7 @@
                 display_name=display_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_route_target")
+                                 rules=["delete_route_target"])
     @decorators.idempotent_id('dfaa58f9-ec29-4d51-a475-870fac08908d')
     def test_delete_route_target(self):
         """test method for delete route target objects"""
@@ -255,7 +255,7 @@
         return route_aggr
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_route_aggregates")
+                                 rules=["list_route_aggregates"])
     @decorators.idempotent_id('15f2c30c-4404-4228-94a0-86c5ec5cf62e')
     def test_list_route_aggregates(self):
         """test method for list route aggregate objects"""
@@ -264,7 +264,7 @@
             self.route_client.list_route_aggregates()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_route_aggregate")
+                                 rules=["show_route_aggregate"])
     @decorators.idempotent_id('c8edee30-81c4-44e2-8485-055bed853384')
     def test_show_route_aggregate(self):
         """test method for show route aggregate objects"""
@@ -274,7 +274,7 @@
                 route_aggr['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_route_aggregates")
+                                 rules=["create_route_aggregates"])
     @decorators.idempotent_id('7553a54f-e41c-4555-b745-a858c5a70690')
     def test_create_route_aggregates(self):
         """test method for create route aggregate objects"""
@@ -282,7 +282,7 @@
             self._create_route_aggregates()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_route_aggregate")
+                                 rules=["update_route_aggregate"])
     @decorators.idempotent_id('de1e6102-0bc6-4f9b-a354-48eb051ab5e4')
     def test_update_route_aggregate(self):
         """test method for update route aggregate objects"""
@@ -294,7 +294,7 @@
                 display_name=display_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_route_aggregate")
+                                 rules=["delete_route_aggregate"])
     @decorators.idempotent_id('e16dbdc6-d7cf-43c7-af9d-bd76cc220200')
     def test_delete_route_aggregate(self):
         """test method for delete route aggregate objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_routers.py b/tungsten_tempest_plugin/tests/api/contrail/test_routers.py
index 53a439e..6f829c5 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_routers.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_routers.py
@@ -137,7 +137,7 @@
         return router
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_physical_routers")
+                                 rules=["list_physical_routers"])
     @decorators.idempotent_id('349ac042-b922-4727-9e1b-8f363ee343f3')
     def test_list_physical_routers(self):
         """test method for list physical router objects"""
@@ -145,7 +145,7 @@
             self.router_client.list_physical_routers()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_physical_routers")
+                                 rules=["create_physical_routers"])
     @decorators.idempotent_id('d0b7449e-9037-4f9f-8c7e-9f364c95f18a')
     def test_create_physical_routers(self):
         """test method for create physical router objects"""
@@ -155,7 +155,7 @@
             self._create_physical_router(global_system_config)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_physical_router")
+                                 rules=["show_physical_router"])
     @decorators.idempotent_id('6dfc53f4-a884-46d5-b303-22ba59c116f4')
     def test_show_physical_router(self):
         """test method for show physical router objects"""
@@ -167,7 +167,7 @@
             self.router_client.show_physical_router(physical_router_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_physical_router")
+                                 rules=["update_physical_router"])
     @decorators.idempotent_id('c270f369-8cd7-4ee3-8ab1-4580c3138a5c')
     def test_update_physical_router(self):
         """test method for update physical router objects"""
@@ -182,7 +182,7 @@
                 display_name=updated_fq_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_physical_router")
+                                 rules=["delete_physical_router"])
     @decorators.idempotent_id('eeded742-6a8d-4e88-bfa8-fe32db463c53')
     def test_delete_physical_router(self):
         """test method for delete physical router objects"""
@@ -194,7 +194,7 @@
             self.router_client.delete_physical_router(physical_router_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_bgp_routers")
+                                 rules=["list_bgp_routers"])
     @decorators.idempotent_id('49bfb461-f99e-4585-b051-e20a3c937589')
     def test_list_bgp_routers(self):
         """test method for list bgp router objects"""
@@ -202,7 +202,7 @@
             self.router_client.list_bgp_routers()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_bgp_routers")
+                                 rules=["create_bgp_routers"])
     @decorators.idempotent_id('7567974c-040e-4edd-b3a1-c633aa9651cb')
     def test_create_bgp_routers(self):
         """test method for create bgp router objects"""
@@ -212,7 +212,7 @@
             self._create_bgp_router(routing_instance)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_bgp_router")
+                                 rules=["show_bgp_router"])
     @decorators.idempotent_id('0d3ad424-18c9-4d96-8708-fa1ebd45594b')
     def test_show_bgp_router(self):
         """test method for show bgp router objects"""
@@ -223,7 +223,7 @@
             self.router_client.show_bgp_router(bgp_router_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_bgp_router")
+                                 rules=["update_bgp_router"])
     @decorators.idempotent_id('dc50e7c5-7614-4281-8a66-282c52f3c769')
     def test_update_bgp_router(self):
         """test method for update bgp router objects"""
@@ -237,7 +237,7 @@
                 display_name=updated_fq_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_bgp_router")
+                                 rules=["delete_bgp_router"])
     @decorators.idempotent_id('f14aee72-cad4-4c3e-8eea-7886a81abb24')
     def test_delete_bgp_router(self):
         """test method for delete bgp router objects"""
@@ -248,7 +248,7 @@
             self.router_client.delete_bgp_router(bgp_router_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_global_vrouter_configs")
+                                 rules=["list_global_vrouter_configs"])
     @decorators.idempotent_id('4af768d1-3cbe-4aff-bcbc-0e045cac3277')
     def test_list_global_vrouter(self):
         """test method for list global vrouter config objects"""
@@ -256,7 +256,7 @@
             self.router_client.list_global_vrouter_configs()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_global_vrouter_configs")
+                                 rules=["create_global_vrouter_configs"])
     @decorators.idempotent_id('e13d800f-9304-4a06-9bf1-ad08345a13a8')
     def test_create_global_vrouter(self):
         """test method for create global vrouter config objects"""
@@ -266,7 +266,7 @@
             self._create_global_vrouter_config(global_system_config)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_global_vrouter_config")
+                                 rules=["show_global_vrouter_config"])
     @decorators.idempotent_id('3bb6f4e1-fd3f-4338-8392-f7f80974a80e')
     def test_show_global_vrouter_config(self):
         """test method for show global vrouter config objects"""
@@ -279,7 +279,7 @@
                 global_vrouter_config_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_global_vrouter_config")
+                                 rules=["update_global_vrouter_config"])
     @decorators.idempotent_id('36fcdd51-c42b-4e67-8c26-73d4cde47507')
     def test_update_global_vrouter(self):
         """test method for update global vrouter config objects"""
@@ -295,7 +295,7 @@
                 display_name=updated_fq_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_global_vrouter_config")
+                                 rules=["delete_global_vrouter_config"])
     @decorators.idempotent_id('4f3d59e8-3dac-4346-9d13-5ebe5ad8f6cf')
     def test_delete_global_vrouter(self):
         """test method for delete global vrouter config objects"""
@@ -308,7 +308,7 @@
                 global_vrouter_config_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_logical_routers")
+                                 rules=["list_logical_routers"])
     @decorators.idempotent_id('674bf3de-a9e5-45c2-921b-b89db73a2abe')
     def test_list_logical_routers(self):
         """test method for list logical router objects"""
@@ -316,7 +316,7 @@
             self.router_client.list_logical_routers()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_logical_routers")
+                                 rules=["create_logical_routers"])
     @decorators.idempotent_id('610f051b-8eba-4d3a-ba43-91386bfc0e52')
     def test_create_logical_routers(self):
         """test method for create logical router objects"""
@@ -324,7 +324,7 @@
             self._create_logical_router()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_logical_router")
+                                 rules=["show_logical_router"])
     @decorators.idempotent_id('992841d4-0d5d-4d85-b513-049b33e2a2e2')
     def test_show_logical_router(self):
         """test method for show logical router objects"""
@@ -333,7 +333,7 @@
             self.router_client.show_logical_router(logical_router_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_logical_router")
+                                 rules=["update_logical_router"])
     @decorators.idempotent_id('518197bf-5233-4059-9021-5d7ecc74718e')
     def test_update_logical_router(self):
         """test method for update logical router objects"""
@@ -345,7 +345,7 @@
                 display_name=updated_fq_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_logical_router")
+                                 rules=["delete_logical_router"])
     @decorators.idempotent_id('70448b9c-4444-45e0-b307-7bff4dc075b1')
     def test_delete_logical_router(self):
         """test method for delete logical router objects"""
@@ -354,7 +354,7 @@
             self.router_client.delete_logical_router(logical_router_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_virtual_routers")
+                                 rules=["list_virtual_routers"])
     @decorators.idempotent_id('604dc476-732e-4890-8665-a497360f5475')
     def test_list_virtual_routers(self):
         """test method for list virtual router objects"""
@@ -362,7 +362,7 @@
             self.router_client.list_virtual_routers()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_virtual_routers")
+                                 rules=["create_virtual_routers"])
     @decorators.idempotent_id('114beb14-45c0-4714-a407-d160bb102022')
     def test_create_virtual_routers(self):
         """test method for create virtual router objects"""
@@ -372,7 +372,7 @@
             self._create_virtual_router(global_system_config)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_virtual_router")
+                                 rules=["show_virtual_router"])
     @decorators.idempotent_id('258fe4e0-3e39-460f-aafa-e3b53c96e534')
     def test_show_virtual_router(self):
         """test method for show virtual router objects"""
@@ -384,7 +384,7 @@
             self.router_client.show_virtual_router(virtual_router_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_virtual_router")
+                                 rules=["update_virtual_router"])
     @decorators.idempotent_id('d1c72191-2068-4552-a78f-038cdd4c9c1d')
     def test_update_virtual_router(self):
         """test method for update virtual router objects"""
@@ -399,7 +399,7 @@
                 display_name=updated_fq_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_virtual_router")
+                                 rules=["delete_virtual_router"])
     @decorators.idempotent_id('efbe25d6-8763-42d4-baf6-9f342e710144')
     def test_delete_virtual_router(self):
         """test method for delete virtual router objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_routing.py b/tungsten_tempest_plugin/tests/api/contrail/test_routing.py
index a6554f8..e2182fd 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_routing.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_routing.py
@@ -58,7 +58,7 @@
         return new_instance
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_routing_instances")
+                                 rules=["list_routing_instances"])
     @decorators.idempotent_id('054c56ba-76b2-4161-a702-40301d8de085')
     def test_list_routing_instances(self):
         """test method for list routing instance objects"""
@@ -66,7 +66,7 @@
             self.routing_client.list_routing_instances()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_routing_instances")
+                                 rules=["create_routing_instances"])
     @decorators.idempotent_id('3d44a46b-5436-43a8-b2f7-8581f0f04dbc')
     def test_create_routing_instances(self):
         """test method for create routing instance objects"""
@@ -74,7 +74,7 @@
             self._create_routing_instances()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_routing_instance")
+                                 rules=["show_routing_instance"])
     @decorators.idempotent_id('161abb37-6037-422b-b453-108a5d10caca')
     def test_show_routing_instance(self):
         """test method for show routing instance objects"""
@@ -83,7 +83,7 @@
             self.routing_client.show_routing_instance(new_instance['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_routing_instance")
+                                 rules=["delete_routing_instance"])
     @decorators.idempotent_id('1d3af01e-01bf-4347-a9bc-633732339e0e')
     def test_delete_routing_instance(self):
         """test method for delete routing instance objects"""
@@ -92,7 +92,7 @@
             self.routing_client.delete_routing_instance(new_instance['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_routing_instance")
+                                 rules=["update_routing_instance"])
     @decorators.idempotent_id('ebcfd442-2a26-4954-968b-e17e414ed0d1')
     def test_update_routing_instance(self):
         """test method for update routing instance objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_routing_policy.py b/tungsten_tempest_plugin/tests/api/contrail/test_routing_policy.py
index eb873a1..9892d91 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_routing_policy.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_routing_policy.py
@@ -54,7 +54,7 @@
                                                          **put_body)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_routing_policys")
+                                 rules=["list_routing_policys"])
     @decorators.idempotent_id('fe25a306-bc4f-42b3-91ca-38df01e35345')
     def test_list_routing_policys(self):
         """test method for list routing policy objects"""
@@ -62,7 +62,7 @@
             self.routing_policy_client.list_routing_policys()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_routing_policys")
+                                 rules=["create_routing_policys"])
     @decorators.idempotent_id('f8ca5e30-8bb3-410f-8618-8fdca70bda06')
     def test_create_routing_policys(self):
         """test method for create routing policy objects"""
@@ -70,7 +70,7 @@
             self._create_routing_policy()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_routing_policy")
+                                 rules=["show_routing_policy"])
     @decorators.idempotent_id('3421e84e-3e2a-452a-9a26-b2caf00b1cbc')
     def test_show_routing_policy(self):
         """test method for show routing policy objects"""
@@ -79,7 +79,7 @@
             self.routing_policy_client.show_routing_policy(policy_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_routing_policy")
+                                 rules=["update_routing_policy"])
     @decorators.idempotent_id('9fc1f44f-c8e2-4f5a-8239-e9b783f55d94')
     def test_update_routing_policy(self):
         """test method for update routing policy objects"""
@@ -88,7 +88,7 @@
             self._update_routing_policy(policy_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_routing_policy")
+                                 rules=["delete_routing_policy"])
     @decorators.idempotent_id('24f1cd7a-2917-4b81-a0a3-a40ed2d40c7d')
     def test_delete_routing_policy(self):
         """test method for delete routing policy objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_security_group.py b/tungsten_tempest_plugin/tests/api/contrail/test_security_group.py
index af65578..6154f5e 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_security_group.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_security_group.py
@@ -50,7 +50,7 @@
         return sec_grp
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_security_groups")
+                                 rules=["list_security_groups"])
     @decorators.idempotent_id('a13cc1d5-f562-4b68-b732-980deb3cddf4')
     def test_list_security_groups(self):
         """test method for list security group objects"""
@@ -59,7 +59,7 @@
             self.security_group_client.list_security_groups()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_security_group")
+                                 rules=["show_security_group"])
     @decorators.idempotent_id('c7ca1781-08ae-4fa2-bd6d-1f369950c4c4')
     def test_show_security_group(self):
         """test method for show security group objects"""
@@ -69,7 +69,7 @@
             self.security_group_client.show_security_group(grp_id)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_security_group")
+                                 rules=["delete_security_group"])
     @decorators.idempotent_id('e682d7b4-deb8-4b5c-9c9b-1e1ada827b40')
     def test_delete_security_group(self):
         """test method for delete security group objects"""
@@ -79,7 +79,7 @@
             self._delete_security_group(grp_id)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_security_groups")
+                                 rules=["create_security_groups"])
     @decorators.idempotent_id('63a2ff14-7869-40a2-962a-d65752de5651')
     def test_create_security_groups(self):
         """test method for create security group objects"""
@@ -87,7 +87,7 @@
             self._create_security_groups()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_security_group")
+                                 rules=["update_security_group"])
     @decorators.idempotent_id('cf9aafe2-fffb-4028-8fd7-4d6634e144e7')
     def test_update_security_group(self):
         """test method for update security group objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_service_appliances.py b/tungsten_tempest_plugin/tests/api/contrail/test_service_appliances.py
index b1eab41..258d4ea 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_service_appliances.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_service_appliances.py
@@ -72,7 +72,7 @@
         return new_appliance
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_service_appliances")
+                                 rules=["list_service_appliances"])
     @decorators.idempotent_id('6b5fc17c-34e6-4d21-a53e-a0dfe69afd31')
     def test_list_service_appliances(self):
         """test method for list service appliance objects"""
@@ -80,7 +80,7 @@
             self.service_appliances_client.list_service_appliances()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_service_appliances")
+                                 rules=["create_service_appliances"])
     @decorators.idempotent_id('0563c0c8-b986-466e-8540-aa8ad7a10367')
     def test_create_service_appliances(self):
         """test method for create service appliance objects"""
@@ -92,7 +92,7 @@
             self._create_service_appliances(new_set)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_service_appliance")
+                                 rules=["show_service_appliance"])
     @decorators.idempotent_id('ea30dcfe-8657-4a7d-9cf1-3176d334bf27')
     def test_show_service_appliance(self):
         """test method for show service appliance objects"""
@@ -107,7 +107,7 @@
                 new_appliance['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_service_appliance")
+                                 rules=["update_service_appliance"])
     @decorators.idempotent_id('a54ca33a-8590-4844-96d7-b96882b59e86')
     def test_update_service_appliance(self):
         """test method for update service appliance objects"""
@@ -123,7 +123,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_service_appliance")
+                                 rules=["delete_service_appliance"])
     @decorators.idempotent_id('362deff5-7b72-4929-ba81-972cfcfa1309')
     def test_delete_service_appliance(self):
         """test method for delete service appliance objects"""
@@ -137,7 +137,7 @@
                 new_appliance['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_service_appliance_sets")
+                                 rules=["list_service_appliance_sets"])
     @decorators.idempotent_id('c1e74da9-00b6-4c88-adda-2ce49094e570')
     def test_list_service_appl_sets(self):
         """test method for list service appliance sets objects"""
@@ -145,7 +145,7 @@
             self.service_appliances_client.list_service_appliance_sets()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_service_appliance_sets")
+                                 rules=["create_service_appliance_sets"])
     @decorators.idempotent_id('eb00d6cf-590f-41bf-8ee4-5be625d9cb93')
     def test_create_service_appl_sets(self):
         """test method for create service appliance sets objects"""
@@ -155,7 +155,7 @@
             self._create_service_appliance_sets(global_system_config)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_service_appliance_set")
+                                 rules=["show_service_appliance_set"])
     @decorators.idempotent_id('dd35dd04-e7d9-46bb-8f36-26835f122572')
     def test_show_service_appl_set(self):
         """test method for show service appliance sets objects"""
@@ -168,7 +168,7 @@
                 new_set['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_service_appliance_set")
+                                 rules=["update_service_appliance_set"])
     @decorators.idempotent_id('952f063b-bc71-4f62-83b1-719bce5ad4ed')
     def test_update_service_appl_set(self):
         """test method for update service appliance sets objects"""
@@ -183,7 +183,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_service_appliance_set")
+                                 rules=["delete_service_appliance_set"])
     @decorators.idempotent_id('7b56ce24-da1d-4565-bd22-c58dc57d7045')
     def test_delete_service_appl_set(self):
         """test method for delete service appliance sets objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_service_clients.py b/tungsten_tempest_plugin/tests/api/contrail/test_service_clients.py
index 9587809..95fd2dd 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_service_clients.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_service_clients.py
@@ -83,7 +83,7 @@
         return new_instance
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_service_templates")
+                                 rules=["list_service_templates"])
     @decorators.idempotent_id('841b1d32-4308-4fb6-852a-41bdd8c56c37')
     def test_list_service_templates(self):
         """test method for list service template objects"""
@@ -91,7 +91,7 @@
             self.service_client.list_service_templates()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_service_templates")
+                                 rules=["create_service_templates"])
     @decorators.idempotent_id('3f02d14a-31e2-4476-821f-87d0cc42d9fb')
     def test_create_service_templates(self):
         """test method for create service template objects"""
@@ -99,7 +99,7 @@
             self._create_service_template()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_service_template")
+                                 rules=["show_service_template"])
     @decorators.idempotent_id('1f15d734-2cc6-4ded-916e-134286c6b87b')
     def test_show_service_template(self):
         """test method for show service template objects"""
@@ -109,7 +109,7 @@
                 new_template['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_service_template")
+                                 rules=["update_service_template"])
     @decorators.idempotent_id('3549debd-4c7a-4574-8d11-4190c8530a23')
     def test_update_service_template(self):
         """test method for update service template objects"""
@@ -121,7 +121,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_service_template")
+                                 rules=["delete_service_template"])
     @decorators.idempotent_id('e86cabd2-5b7e-4ee8-86ec-db52619b852b')
     def test_delete_service_template(self):
         """test method for delete service template objects"""
@@ -131,7 +131,7 @@
                 new_template['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_service_health_checks")
+                                 rules=["list_service_health_checks"])
     @decorators.idempotent_id('5210d6ca-9a38-4b6b-b5b7-f836c3846079')
     def test_list_service_health_checks(self):
         """test method for list service health check objects"""
@@ -139,7 +139,7 @@
             self.service_client.list_service_health_checks()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_service_health_checks")
+                                 rules=["create_service_health_checks"])
     @decorators.idempotent_id('77716feb-0d05-4cfd-8a17-79cf0b19ed3c')
     def test_create_service_health(self):
         """test method for create service health check objects"""
@@ -147,7 +147,7 @@
             self._create_service_health_check()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_service_health_check")
+                                 rules=["show_service_health_check"])
     @decorators.idempotent_id('80db4445-8d6c-4c8f-aa25-d4ea53d32d2c')
     def test_show_service_health(self):
         """test method for show service health check objects"""
@@ -157,7 +157,7 @@
                 new_health_check['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_service_health_check")
+                                 rules=["update_service_health_check"])
     @decorators.idempotent_id('68fb1510-4b76-40cc-8979-e56e537229d2')
     def test_update_service_health(self):
         """test method for update service health check objects"""
@@ -169,7 +169,7 @@
                 display_name=update_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_service_health_check")
+                                 rules=["delete_service_health_check"])
     @decorators.idempotent_id('2dce3942-402a-48a4-b682-fdc425d3d935')
     def test_delete_service_health(self):
         """test method for delete service health check objects"""
@@ -179,7 +179,7 @@
                 new_health_check['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_service_instances")
+                                 rules=["create_service_instances"])
     @decorators.idempotent_id('1469c71e-f6f5-419f-9672-c3c67f879704')
     def test_create_service_instances(self):
         """test method for create service client objects"""
@@ -187,7 +187,7 @@
             self._create_service_instance()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_service_instance")
+                                 rules=["show_service_instance"])
     @decorators.idempotent_id('ea5b716d-5de8-4c71-becd-f1501c22f0df')
     def test_show_service_instance(self):
         """test method for show service client objects"""
@@ -197,7 +197,7 @@
                 new_instance['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_service_instance")
+                                 rules=["delete_service_instance"])
     @decorators.idempotent_id('74934833-29cd-416b-a5a6-273f733d058a')
     def test_delete_service_instance(self):
         """test method for delete service client objects"""
@@ -207,7 +207,7 @@
                 new_instance['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_service_instances")
+                                 rules=["list_service_instances"])
     @decorators.idempotent_id('da6016a3-a2a8-42a8-b064-c124c22fef6f')
     def test_list_service_instances(self):
         """test method for list service client objects"""
@@ -215,7 +215,7 @@
             self.service_client.list_service_instances()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_service_instance")
+                                 rules=["update_service_instance"])
     @decorators.idempotent_id('a6237b99-336b-42db-a8eb-9604a1b08fc6')
     def test_update_service_instance(self):
         """test method for update service client objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py b/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py
index 379a142..02916af 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py
@@ -51,7 +51,7 @@
         self.subnet_client.update_subnet(subnet_uuid, **put_body)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_subnets")
+                                 rules=["list_subnets"])
     @decorators.idempotent_id('ddd1d9ae-cf2f-4a74-98ba-b0f481f27977')
     def test_list_subnets(self):
         """test method for list subnet objects"""
@@ -59,7 +59,7 @@
             self.subnet_client.list_subnets()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_subnets")
+                                 rules=["create_subnets"])
     @decorators.idempotent_id('ee0cb904-d162-44a4-b7b0-a7451f667ed5')
     def test_create_subnets(self):
         """test method for create subnet objects"""
@@ -67,7 +67,7 @@
             self._create_subnet()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_subnet")
+                                 rules=["show_subnet"])
     @decorators.idempotent_id('994618f2-5b40-460c-a6a8-6479bc15bf80')
     def test_show_subnet(self):
         """test method for show subnet objects"""
@@ -76,7 +76,7 @@
             self.subnet_client.show_subnet(subnet_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_subnet")
+                                 rules=["update_subnet"])
     @decorators.idempotent_id('565e44c9-eb9b-4ae6-9ebb-db422a9751ee')
     def test_update_subnet(self):
         """test method for update subnet objects"""
@@ -85,7 +85,7 @@
             self._update_subnet(subnet_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_subnet")
+                                 rules=["delete_subnet"])
     @decorators.idempotent_id('a733b913-7a88-45d9-ac0a-d858fa3dc662')
     def test_delete_subnet(self):
         """test method for delete subnet objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_dns.py b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_dns.py
index 0557e60..8f48e34 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_dns.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_dns.py
@@ -72,7 +72,7 @@
         return dns_record
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_virtual_DNSs")
+                                 rules=["list_virtual_DNSs"])
     @decorators.idempotent_id('8401d690-afdf-4b6e-ad60-b9363a8cfb1d')
     def test_list_virtual_dns(self):
         """test method for list virtual dns objects"""
@@ -80,7 +80,7 @@
             self.virtual_dns_client.list_virtual_dns()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_virtual_DNSs")
+                                 rules=["create_virtual_DNSs"])
     @decorators.idempotent_id('a7dd2c9e-e1eb-4dc4-ac70-4d48a291a3bf')
     def test_create_virtual_dns(self):
         """test method for create virtual dns objects"""
@@ -88,7 +88,7 @@
             self._create_virtual_dns()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_virtual_DNS")
+                                 rules=["show_virtual_DNS"])
     @decorators.idempotent_id('ffc0fc82-3bff-48ab-b65a-3d90b4a3154d')
     def test_show_virtual_dns(self):
         """test method for show virtual dns objects"""
@@ -98,7 +98,7 @@
                 dns['virtual-DNS']['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_virtual_DNS")
+                                 rules=["delete_virtual_DNS"])
     @decorators.idempotent_id('4793caa1-7707-4123-b1b4-c3feae91312f')
     def test_delete_virtual_dns(self):
         """test method for delete virtual dns objects"""
@@ -108,7 +108,7 @@
                 dns['virtual-DNS']['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_virtual_DNS")
+                                 rules=["update_virtual_DNS"])
     @decorators.idempotent_id('2bc43935-57c1-4bf6-9868-78ccfce164bb')
     def test_update_virtual_dns(self):
         """test method for update virtual dns objects"""
@@ -124,7 +124,7 @@
                 display_name=display_name)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_virtual_DNS_records")
+                                 rules=["list_virtual_DNS_records"])
     @decorators.idempotent_id('e9103999-2f02-4f04-a8a0-906ca4fb394d')
     def test_list_virtual_dns_records(self):
         """test method for list virtual dns record objects"""
@@ -132,7 +132,7 @@
             self.virtual_dns_client.list_virtual_dns_records()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_virtual_DNS_records")
+                                 rules=["create_virtual_DNS_records"])
     @decorators.idempotent_id('bd9f3992-0ce4-4477-97a0-1271bc8ad9ef')
     def test_create_virtual_dns_records(self):
         """test method for create virtual dns record objects"""
@@ -142,7 +142,7 @@
             self._create_virtual_dns_record(dns)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_virtual_DNS_record")
+                                 rules=["show_virtual_DNS_record"])
     @decorators.idempotent_id('fa3d1a2b-d788-4623-89a4-3a9ed1db7a7d')
     def test_show_virtual_dns_record(self):
         """test method for show virtual dns record objects"""
@@ -154,7 +154,7 @@
                 dns_record['virtual-DNS-record']['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_virtual_DNS_record")
+                                 rules=["delete_virtual_DNS_record"])
     @decorators.idempotent_id('de31e867-c997-4b4c-a095-43c647f5c192')
     def test_delete_virtual_dns_record(self):
         """test method for delete virtual dns record objects"""
@@ -166,7 +166,7 @@
                 dns_record['virtual-DNS-record']['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_virtual_DNS_record")
+                                 rules=["update_virtual_DNS_record"])
     @decorators.idempotent_id('65acef26-646f-4b36-923c-8a1d07e90c5c')
     def test_update_virtual_dns_record(self):
         """test method for update virtual dns record objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_ip.py b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_ip.py
index f375f58..06444e5 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_ip.py
@@ -52,7 +52,7 @@
         self.virtual_ip_client.update_virtual_ip(virtual_ip_uuid, **put_body)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_virtual_ips")
+                                 rules=["list_virtual_ips"])
     @decorators.idempotent_id('92303eee-bd96-48bc-a02c-39950bd19a21')
     def test_list_virtual_ips(self):
         """test method for list virtual ip objects"""
@@ -60,7 +60,7 @@
             self.virtual_ip_client.list_virtual_ips()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_virtual_ips")
+                                 rules=["create_virtual_ips"])
     @decorators.idempotent_id('e0070888-995d-46ab-91fc-db1412eba2f7')
     def test_create_virtual_ips(self):
         """test method for create virtual ip objects"""
@@ -68,7 +68,7 @@
             self._create_virtual_ip()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_virtual_ip")
+                                 rules=["show_virtual_ip"])
     @decorators.idempotent_id('2a4b3abd-c6f7-4d82-aa31-02e53d2a8fb9')
     def test_show_virtual_ip(self):
         """test method for show virtual ip objects"""
@@ -77,7 +77,7 @@
             self.virtual_ip_client.show_virtual_ip(virtual_ip_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_virtual_ip")
+                                 rules=["update_virtual_ip"])
     @decorators.idempotent_id('0e975c92-62dc-4e6e-82cc-8cf37da3c5b2')
     def test_update_virtual_ip(self):
         """test method for update virtual ip objects"""
@@ -86,7 +86,7 @@
             self._update_virtual_ip(virtual_ip_uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_virtual_ip")
+                                 rules=["delete_virtual_ip"])
     @decorators.idempotent_id('fd0b2635-36bd-4345-97b7-9c0a57372eba')
     def test_delete_virtual_ip(self):
         """test method for delete virtual ip objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_machines.py b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_machines.py
index e58c6bf..f4ba706 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_machines.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_machines.py
@@ -99,7 +99,7 @@
         super(VMContrailTest, cls).resource_cleanup()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_virtual_machine_interfaces")
+                                 rules=["list_virtual_machine_interfaces"])
     @decorators.idempotent_id('e27d1fae-7324-4ef3-87b1-e7f519b1e2a7')
     def test_list_vm_interfaces(self):
         """test method for list vm interfaces objects"""
@@ -108,7 +108,7 @@
             self.vm_client.list_virtual_machine_interfaces()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_virtual_machine_interfaces")
+                                 rules=["create_virtual_machine_interfaces"])
     @decorators.idempotent_id('d8a3a524-d61b-4bcb-8146-c5d4f308df8e')
     def test_add_vm_interfaces(self):
         """test method for add vm interfaces objects"""
@@ -116,7 +116,7 @@
             self._create_virual_machine_interface()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_virtual_machine_interface")
+                                 rules=["show_virtual_machine_interface"])
     @decorators.idempotent_id('3f17125a-9060-4c4a-a23f-0fe2aba2ccef')
     def test_show_vm_interface(self):
         """test method for show vm interfaces objects"""
@@ -125,7 +125,7 @@
             self.vm_client.show_virtual_machine_interface(test['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_virtual_machine_interface")
+                                 rules=["delete_virtual_machine_interface"])
     @decorators.idempotent_id('ce7f9471-ba1b-40d2-94f1-bdd0c610e22f')
     def test_delete_vm_interface(self):
         """test method for delete vm interfaces objects"""
@@ -134,7 +134,7 @@
             self.vm_client.delete_vm_interface(body['uuid'])
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_virtual_machine_interface")
+                                 rules=["update_virtual_machine_interface"])
     @decorators.idempotent_id('7ca3046a-6245-4c15-914b-5a8ecdbeee11')
     def test_update_vm_interface(self):
         """test method for update vm interfaces objects"""
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_networks.py b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_networks.py
index 356f37e..b1d54f5 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_networks.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_networks.py
@@ -66,7 +66,7 @@
         return network
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="list_virtual_networks")
+                                 rules=["list_virtual_networks"])
     @decorators.idempotent_id('375ebc8d-dc52-4d9c-877b-85aba35b1539')
     def test_list_virtual_networks(self):
         """test method for list vm network objects"""
@@ -74,7 +74,7 @@
             self.vn_client.list_virtual_networks()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="create_virtual_networks")
+                                 rules=["create_virtual_networks"])
     @decorators.idempotent_id('375ebc8d-dc52-4d9c-877b-96aba35b2530')
     def test_create_virtual_networks(self):
         """test method for create vm network objects"""
@@ -82,7 +82,7 @@
             self._create_virtual_network()
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="update_virtual_network")
+                                 rules=["update_virtual_network"])
     @decorators.idempotent_id('375ebc8d-dc52-4d9c-566b-150a025c1237')
     def test_update_virtual_network(self):
         """test method for update vm network objects"""
@@ -93,7 +93,7 @@
                 uuid, router_external=False)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="delete_virtual_network")
+                                 rules=["delete_virtual_network"])
     @decorators.idempotent_id('375ebc8d-dc52-4d9c-877b-17bcb53c3641')
     def test_delete_virtual_network(self):
         """test method for delete vm network objects"""
@@ -102,7 +102,7 @@
             self.vn_client.delete_virtual_network(uuid)
 
     @rbac_rule_validation.action(service="Contrail",
-                                 rules="show_virtual_network")
+                                 rules=["show_virtual_network"])
     @decorators.idempotent_id('375ebc8d-dc52-4d9c-877b-27c1a1242a81')
     def test_show_virtual_network(self):
         """test method for show vm network objects"""
