diff --git a/doc/source/test_writing_guide.rst b/doc/source/test_writing_guide.rst index d25f60a2..61ab326d 100644 --- a/doc/source/test_writing_guide.rst +++ b/doc/source/test_writing_guide.rst @@ -83,7 +83,7 @@ Example:: @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-aggregates:show") + rules=["os_compute_api:os-aggregates:show"]) def test_show_aggregate_rbac(self): # Do test setup before the ``override_role`` call. aggregate_id = self._create_aggregate() @@ -106,7 +106,7 @@ Example using waiter:: @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-admin-password") + rules=["os_compute_api:os-admin-password"]) def test_change_server_password(self): original_password = self.servers_client.show_password( self.server['id']) @@ -140,7 +140,7 @@ Incorrect:: @rbac_rule_validation.action( service="example-service", - rule="example-rule") + rules=["example-rule"]) def test_change_server_password(self): # Never call a helper function inside the contextmanager that calls a # bunch of APIs. Only call the API that enforces the policy action diff --git a/patrole_tempest_plugin/rbac_rule_validation.py b/patrole_tempest_plugin/rbac_rule_validation.py index d3b057cd..0cb6f787 100644 --- a/patrole_tempest_plugin/rbac_rule_validation.py +++ b/patrole_tempest_plugin/rbac_rule_validation.py @@ -17,7 +17,6 @@ import functools import logging import sys -from oslo_log import versionutils from oslo_utils import excutils import six @@ -39,9 +38,7 @@ RBACLOG = logging.getLogger('rbac_reporting') def action(service, - rule='', rules=None, - expected_error_code=_DEFAULT_ERROR_CODE, expected_error_codes=None, extra_target_data=None): """A decorator for verifying OpenStack policy enforcement. @@ -75,11 +72,8 @@ def action(service, As such, negative and positive testing can be applied using this decorator. :param str service: An OpenStack service. Examples: "nova" or "neutron". - :param rule: (DEPRECATED) A policy action defined in a policy.json file - or in code. Also accepts a callable that returns a policy action. - :type rule: str or callable - :param rules: A list of policy actions defined in a policy.json file - or in code. The rules are logical-ANDed together to derive the expected + :param list rules: A list of policy actions defined in a policy file or in + code. The rules are logical-ANDed together to derive the expected result. Also accepts list of callables that return a policy action. .. note:: @@ -87,16 +81,6 @@ def action(service, Patrole currently only supports custom JSON policy files. :type rules: list[str] or list[callable] - :param int expected_error_code: (DEPRECATED) Overrides default value of 403 - (Forbidden) with endpoint-specific error code. Currently only supports - 403 and 404. Support for 404 is needed because some services, like - Neutron, intentionally throw a 404 for security reasons. - - .. warning:: - - A 404 should not be provided *unless* the endpoint masks a - ``Forbidden`` exception as a ``NotFound`` exception. - :param list expected_error_codes: When the ``rules`` list parameter is used, then this list indicates the expected error code to use if one of the rules does not allow the role being tested. This list must @@ -117,6 +101,12 @@ def action(service, If it is not passed, then it is defaulted to 403. + .. warning:: + + A 404 should not be provided *unless* the endpoint masks a + ``Forbidden`` exception as a ``NotFound`` exception. + + :type expected_error_codes: list[int] :param dict extra_target_data: Dictionary, keyed with ``oslo.policy`` generic check names, whose values are string literals that reference nested ``tempest.test.BaseTestCase`` attributes. Used by @@ -137,7 +127,8 @@ def action(service, Examples:: @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-agents") + service="nova", + rules=["os_compute_api:os-agents"]) def test_list_agents_rbac(self): # The call to `override_role` is mandatory. with self.rbac_utils.override_role(self): @@ -147,8 +138,7 @@ def action(service, if extra_target_data is None: extra_target_data = {} - rules, expected_error_codes = _prepare_multi_policy(rule, rules, - expected_error_code, + rules, expected_error_codes = _prepare_multi_policy(rules, expected_error_codes) def decorator(test_func): @@ -172,7 +162,6 @@ def action(service, disallowed_rules.append(rule) allowed = allowed and _allowed - exp_error_code = expected_error_code if disallowed_rules: # Choose the first disallowed rule and expect the error # code corresponding to it. @@ -181,6 +170,8 @@ def action(service, LOG.debug("%s: Expecting %d to be raised for policy name: %s", test_func.__name__, exp_error_code, disallowed_rules[0]) + else: + exp_error_code = expected_error_codes[0] expected_exception, irregular_msg = _get_exception_type( exp_error_code) @@ -272,7 +263,7 @@ def action(service, return decorator -def _prepare_multi_policy(rule, rules, exp_error_code, exp_error_codes): +def _prepare_multi_policy(rules, exp_error_codes): if exp_error_codes: if not rules: msg = ("The `rules` list must be provided if using the " @@ -282,34 +273,15 @@ def _prepare_multi_policy(rule, rules, exp_error_code, exp_error_codes): msg = ("The `expected_error_codes` list is not the same length " "as the `rules` list.") raise ValueError(msg) - if exp_error_code: - deprecation_msg = ( - "The `exp_error_code` argument has been deprecated in favor " - "of `exp_error_codes` and will be removed in a future " - "version.") - versionutils.report_deprecated_feature(LOG, deprecation_msg) - LOG.debug("The `exp_error_codes` argument will be used instead of " - "`exp_error_code`.") if not isinstance(exp_error_codes, (tuple, list)): exp_error_codes = [exp_error_codes] else: exp_error_codes = [] - if exp_error_code: - exp_error_codes.append(exp_error_code) if rules is None: rules = [] elif not isinstance(rules, (tuple, list)): rules = [rules] - if rule: - deprecation_msg = ( - "The `rule` argument has been deprecated in favor of `rules` " - "and will be removed in a future version.") - versionutils.report_deprecated_feature(LOG, deprecation_msg) - if rules: - LOG.debug("The `rules` argument will be used instead of `rule`.") - else: - rules.append(rule) # Fill in the exp_error_codes if needed. This is needed for the scenarios # where no exp_error_codes array is provided, so the error codes must be diff --git a/patrole_tempest_plugin/rbac_utils.py b/patrole_tempest_plugin/rbac_utils.py index 366e0336..6db2199c 100644 --- a/patrole_tempest_plugin/rbac_utils.py +++ b/patrole_tempest_plugin/rbac_utils.py @@ -83,7 +83,7 @@ class RbacUtils(object): Example:: @rbac_rule_validation.action(service='test', - rule='a:test:rule') + rules=['a:test:rule']) def test_foo(self): # Allocate test-level resources here. with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/compute/test_agents_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_agents_rbac.py index a046f967..617aa5b2 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_agents_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_agents_rbac.py @@ -42,7 +42,7 @@ class AgentsRbacTest(rbac_base.BaseV2ComputeRbacTest): return kwargs @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-agents") + service="nova", rules=["os_compute_api:os-agents"]) @decorators.idempotent_id('d1bc6d97-07f5-4f45-ac29-1c619a6a7e27') def test_list_agents_rbac(self): with self.rbac_utils.override_role(self): @@ -50,7 +50,7 @@ class AgentsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-agents") + rules=["os_compute_api:os-agents"]) @decorators.idempotent_id('77d6cae4-1ced-47f7-af2e-3d6a45958fd6') def test_create_agent(self): params = {'hypervisor': 'kvm', 'os': 'win', 'architecture': 'x86', @@ -63,7 +63,7 @@ class AgentsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-agents") + rules=["os_compute_api:os-agents"]) @decorators.idempotent_id('b22f2681-9ffb-439b-b240-dae503e41020') def test_update_agent(self): params = self._param_helper( @@ -84,7 +84,7 @@ class AgentsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-agents") + rules=["os_compute_api:os-agents"]) @decorators.idempotent_id('c5042af8-0682-43b0-abc4-bf33349e23dd') def test_delete_agent(self): params = self._param_helper( diff --git a/patrole_tempest_plugin/tests/api/compute/test_aggregates_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_aggregates_rbac.py index b7cd3920..dea8bb9f 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_aggregates_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_aggregates_rbac.py @@ -81,14 +81,14 @@ class AggregatesRbacTest(rbac_base.BaseV2ComputeRbacTest): host=self.host) @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-aggregates:create") + service="nova", rules=["os_compute_api:os-aggregates:create"]) @decorators.idempotent_id('ba754393-896e-434a-9704-452ff4a84f3f') def test_create_aggregate_rbac(self): with self.rbac_utils.override_role(self): self._create_aggregate() @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-aggregates:show") + service="nova", rules=["os_compute_api:os-aggregates:show"]) @decorators.idempotent_id('8fb0b749-b120-4727-b3fb-bcfa3fa6f55b') def test_show_aggregate_rbac(self): aggregate_id = self._create_aggregate() @@ -96,14 +96,14 @@ class AggregatesRbacTest(rbac_base.BaseV2ComputeRbacTest): self.aggregates_client.show_aggregate(aggregate_id) @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-aggregates:index") + service="nova", rules=["os_compute_api:os-aggregates:index"]) @decorators.idempotent_id('146284da-5dd6-4c97-b598-42b480f014c6') def test_list_aggregate_rbac(self): with self.rbac_utils.override_role(self): self.aggregates_client.list_aggregates() @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-aggregates:update") + service="nova", rules=["os_compute_api:os-aggregates:update"]) @decorators.idempotent_id('c94e0d69-99b6-477e-b301-2cd0e9d0ad81') def test_update_aggregate_rbac(self): aggregate_id = self._create_aggregate() @@ -113,7 +113,7 @@ class AggregatesRbacTest(rbac_base.BaseV2ComputeRbacTest): name=new_name) @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-aggregates:delete") + service="nova", rules=["os_compute_api:os-aggregates:delete"]) @decorators.idempotent_id('5a50c5a6-0f12-4405-a1ce-2288ae895ea6') def test_delete_aggregate_rbac(self): aggregate_id = self._create_aggregate() @@ -121,7 +121,7 @@ class AggregatesRbacTest(rbac_base.BaseV2ComputeRbacTest): self.aggregates_client.delete_aggregate(aggregate_id) @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-aggregates:add_host") + service="nova", rules=["os_compute_api:os-aggregates:add_host"]) @decorators.idempotent_id('97e6e9df-5291-4faa-8147-755b2d1f1ce2') def test_add_host_to_aggregate_rbac(self): aggregate_id = self._create_aggregate() @@ -129,7 +129,7 @@ class AggregatesRbacTest(rbac_base.BaseV2ComputeRbacTest): self._add_host_to_aggregate(aggregate_id) @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-aggregates:remove_host") + service="nova", rules=["os_compute_api:os-aggregates:remove_host"]) @decorators.idempotent_id('5b035a25-75d2-4d72-b4d6-0f0337335628') def test_remove_host_from_aggregate_rbac(self): aggregate_id = self._create_aggregate() @@ -138,7 +138,7 @@ class AggregatesRbacTest(rbac_base.BaseV2ComputeRbacTest): self.aggregates_client.remove_host(aggregate_id, host=self.host) @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-aggregates:set_metadata") + service="nova", rules=["os_compute_api:os-aggregates:set_metadata"]) @decorators.idempotent_id('ed6f3849-065c-4ae9-a81e-6ad7ed0d3d9d') def test_set_metadata_on_aggregate_rbac(self): aggregate_id = self._create_aggregate() diff --git a/patrole_tempest_plugin/tests/api/compute/test_availability_zone_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_availability_zone_rbac.py index 66dce5c7..d8b165c5 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_availability_zone_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_availability_zone_rbac.py @@ -28,15 +28,17 @@ class NovaAvailabilityZoneRbacTest(rbac_base.BaseV2ComputeRbacTest): "enabled." % cls.__name__) raise cls.skipException(msg) - @rbac_rule_validation.action(service="nova", rule="os_compute_api:" - "os-availability-zone:list") + @rbac_rule_validation.action( + service="nova", + rules=["os_compute_api:os-availability-zone:list"]) @decorators.idempotent_id('cd34e7ea-d26e-4fa3-a8d0-f8883726ce3d') def test_get_availability_zone_list_rbac(self): with self.rbac_utils.override_role(self): self.availability_zone_client.list_availability_zones() - @rbac_rule_validation.action(service="nova", rule="os_compute_api:" - "os-availability-zone:detail") + @rbac_rule_validation.action( + service="nova", + rules=["os_compute_api:os-availability-zone:detail"]) @decorators.idempotent_id('2f61c191-6ece-4f21-b487-39d749e3d38e') def test_get_availability_zone_list_detail_rbac(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/compute/test_fixed_ips_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_fixed_ips_rbac.py index f426cf31..25f7d5f4 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_fixed_ips_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_fixed_ips_rbac.py @@ -56,7 +56,7 @@ class FixedIpsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('c89391f7-4844-4a70-a116-37c1336efb99') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-fixed-ips") + rules=["os_compute_api:os-fixed-ips"]) def test_show_fixed_ip_details(self): with self.rbac_utils.override_role(self): self.fixed_ips_client.show_fixed_ip(self.ip) @@ -64,7 +64,7 @@ class FixedIpsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('f0314501-735d-4315-9856-959e01e82f0d') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-fixed-ips") + rules=["os_compute_api:os-fixed-ips"]) def test_set_reserve(self): with self.rbac_utils.override_role(self): self.fixed_ips_client.reserve_fixed_ip(self.ip, reserve="None") @@ -72,7 +72,7 @@ class FixedIpsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('866a6fdc-a237-4502-9bf2-52fe82aba356') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-fixed-ips") + rules=["os_compute_api:os-fixed-ips"]) def test_set_unreserve(self): with self.rbac_utils.override_role(self): self.fixed_ips_client.reserve_fixed_ip(self.ip, unreserve="None") diff --git a/patrole_tempest_plugin/tests/api/compute/test_flavor_access_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_flavor_access_rbac.py index a99ddbdd..317c1ad8 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_flavor_access_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_flavor_access_rbac.py @@ -40,7 +40,7 @@ class FlavorAccessRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('a2bd3740-765d-4c95-ac98-9e027378c75e') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-access") + rules=["os_compute_api:os-flavor-access"]) def test_show_flavor_contains_is_public_key(self): public_flavor_id = CONF.compute.flavor_ref @@ -58,7 +58,7 @@ class FlavorAccessRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('dd388146-9750-4124-82ba-62deff1052bb') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-access") + rules=["os_compute_api:os-flavor-access"]) def test_list_flavors_details_contains_is_public_key(self): expected_attr = 'os-flavor-access:is_public' @@ -77,7 +77,7 @@ class FlavorAccessRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('39cb5c8f-9990-436f-9282-fc76a41d9bac') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-access:add_tenant_access") + rules=["os_compute_api:os-flavor-access:add_tenant_access"]) def test_add_flavor_access(self): with self.rbac_utils.override_role(self): self.flavors_client.add_flavor_access( @@ -88,7 +88,7 @@ class FlavorAccessRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('61b8621f-52e4-473a-8d07-e228af8853d1') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-access:remove_tenant_access") + rules=["os_compute_api:os-flavor-access:remove_tenant_access"]) def test_remove_flavor_access(self): self.flavors_client.add_flavor_access( flavor_id=self.flavor_id, tenant_id=self.tenant_id) @@ -103,7 +103,7 @@ class FlavorAccessRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('e1cf59fb-7f32-40a1-96b9-248ab23dd581') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-access") + rules=["os_compute_api:os-flavor-access"]) def test_list_flavor_access(self): # Add flavor access for os_primary so that it can access the flavor or # else a NotFound is raised. diff --git a/patrole_tempest_plugin/tests/api/compute/test_flavor_extra_specs_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_flavor_extra_specs_rbac.py index 816492c6..b781540a 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_flavor_extra_specs_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_flavor_extra_specs_rbac.py @@ -50,7 +50,7 @@ class FlavorExtraSpecsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('daee891d-dfe9-4501-a39c-29f2371bec3c') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-extra-specs:show") + rules=["os_compute_api:os-flavor-extra-specs:show"]) def test_show_flavor_extra_spec(self): key = self._set_flavor_extra_spec() with self.rbac_utils.override_role(self): @@ -59,7 +59,7 @@ class FlavorExtraSpecsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('fcffeca2-ed04-4e85-bf93-02fb5643f22b') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-extra-specs:create") + rules=["os_compute_api:os-flavor-extra-specs:create"]) def test_set_flavor_extra_spec(self): with self.rbac_utils.override_role(self): self._set_flavor_extra_spec() @@ -67,7 +67,7 @@ class FlavorExtraSpecsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('42b85279-6bfa-4f58-b7a2-258c284f03c5') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-extra-specs:update") + rules=["os_compute_api:os-flavor-extra-specs:update"]) def test_update_flavor_extra_spec(self): key = self._set_flavor_extra_spec() update_val = data_utils.rand_name(self.__class__.__name__ + '-val') @@ -78,7 +78,7 @@ class FlavorExtraSpecsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('4b0e5471-e010-4c09-8965-80898e6760a3') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-extra-specs:delete") + rules=["os_compute_api:os-flavor-extra-specs:delete"]) def test_unset_flavor_extra_spec(self): key = self._set_flavor_extra_spec() with self.rbac_utils.override_role(self): @@ -87,7 +87,7 @@ class FlavorExtraSpecsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('02c3831a-3ce9-476e-a722-d805ac2da621') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-extra-specs:index") + rules=["os_compute_api:os-flavor-extra-specs:index"]) def test_list_flavor_extra_specs(self): self._set_flavor_extra_spec() with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/compute/test_flavor_manage_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_flavor_manage_rbac.py index f0f267c8..f968d4e7 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_flavor_manage_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_flavor_manage_rbac.py @@ -32,7 +32,7 @@ class FlavorManageRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('a4e7faec-7a4b-4809-9856-90d5b747ca35') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-manage:create") + rules=["os_compute_api:os-flavor-manage:create"]) def test_create_flavor_manage(self): with self.rbac_utils.override_role(self): self.create_flavor() @@ -40,7 +40,7 @@ class FlavorManageRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('782e988e-061b-4c40-896f-a77c70c2b057') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-manage:delete") + rules=["os_compute_api:os-flavor-manage:delete"]) def test_delete_flavor_manage(self): flavor_id = self.create_flavor()['id'] diff --git a/patrole_tempest_plugin/tests/api/compute/test_flavor_rxtx_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_flavor_rxtx_rbac.py index b4531af4..0748e67e 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_flavor_rxtx_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_flavor_rxtx_rbac.py @@ -40,7 +40,7 @@ class FlavorRxtxRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('5e1fd9f0-9a08-485a-ad9c-0fc66e4d64b7') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-rxtx") + rules=["os_compute_api:os-flavor-rxtx"]) def test_list_flavors_details_rxtx(self): with self.rbac_utils.override_role(self): result = self.flavors_client.list_flavors(detail=True)['flavors'] @@ -53,7 +53,7 @@ class FlavorRxtxRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('70c55a07-c843-4627-a29d-ba78673c1e63') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-flavor-rxtx") + rules=["os_compute_api:os-flavor-rxtx"]) def test_get_flavor_rxtx(self): with self.rbac_utils.override_role(self): result = self.flavors_client.show_flavor( diff --git a/patrole_tempest_plugin/tests/api/compute/test_floating_ip_pools_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_floating_ip_pools_rbac.py index 7467130a..eef7943f 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_floating_ip_pools_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_floating_ip_pools_rbac.py @@ -48,7 +48,7 @@ class FloatingIpPoolsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('c1a17153-b25d-4444-a721-5897d7737482') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-floating-ip-pools") + rules=["os_compute_api:os-floating-ip-pools"]) def test_list_floating_ip_pools(self): with self.rbac_utils.override_role(self): self.fip_pools_client.list_floating_ip_pools() diff --git a/patrole_tempest_plugin/tests/api/compute/test_floating_ips_bulk_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_floating_ips_bulk_rbac.py index 3ccef73d..4a8426c4 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_floating_ips_bulk_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_floating_ips_bulk_rbac.py @@ -89,7 +89,7 @@ class FloatingIpsBulkRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('9a49e73f-96a0-4e93-830a-22c4e443b486') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-floating-ips-bulk") + rules=["os_compute_api:os-floating-ips-bulk"]) def test_create_floating_ips_bulk(self): with self.rbac_utils.override_role(self): self._create_floating_ips_bulk() @@ -97,7 +97,7 @@ class FloatingIpsBulkRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('3b5c8a02-005d-4256-8a95-6fa2f389c6cf') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-floating-ips-bulk") + rules=["os_compute_api:os-floating-ips-bulk"]) def test_list_floating_ips_bulk(self): with self.rbac_utils.override_role(self): self.fip_bulk_client.list_floating_ips_bulk() @@ -105,7 +105,7 @@ class FloatingIpsBulkRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('37c2b759-c494-4e20-9dba-6a67b2df9573') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-floating-ips-bulk") + rules=["os_compute_api:os-floating-ips-bulk"]) def test_delete_floating_ips_bulk(self): self._create_floating_ips_bulk() with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/compute/test_floating_ips_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_floating_ips_rbac.py index 10455129..0f37a809 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_floating_ips_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_floating_ips_rbac.py @@ -44,7 +44,7 @@ class FloatingIpsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('ac1b3053-f755-4cda-85a0-30e88b88d7ba') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-floating-ips") + rules=["os_compute_api:os-floating-ips"]) def test_list_floating_ips(self): with self.rbac_utils.override_role(self): self.floating_ips_client.list_floating_ips() @@ -52,7 +52,7 @@ class FloatingIpsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('bebe52b3-5269-4e72-80c8-5a4a39c3bfa6') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-floating-ips") + rules=["os_compute_api:os-floating-ips"]) def test_show_floating_ip(self): body = self.floating_ips_client.create_floating_ip( pool=CONF.network.floating_network_name)['floating_ip'] @@ -64,7 +64,7 @@ class FloatingIpsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('2bfb8745-c329-4ee9-95f6-c165a1989dbf') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-floating-ips") + rules=["os_compute_api:os-floating-ips"]) def test_create_floating_ips(self): with self.rbac_utils.override_role(self): body = self.floating_ips_client.create_floating_ip( @@ -75,7 +75,7 @@ class FloatingIpsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('d3028373-5027-4e7a-b761-01c515403ecb') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-floating-ips") + rules=["os_compute_api:os-floating-ips"]) def test_delete_floating_ip(self): body = self.floating_ips_client.create_floating_ip( pool=CONF.network.floating_network_name)['floating_ip'] diff --git a/patrole_tempest_plugin/tests/api/compute/test_hosts_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_hosts_rbac.py index 41d2656b..f2d8113f 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_hosts_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_hosts_rbac.py @@ -36,7 +36,7 @@ class HostsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('035b7935-2fae-4218-8d37-27fa83097494') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-hosts") + rules=["os_compute_api:os-hosts"]) def test_list_hosts(self): with self.rbac_utils.override_role(self): self.hosts_client.list_hosts() @@ -44,7 +44,7 @@ class HostsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('bc10d8b4-d2c3-4d4e-9d2b-31d1bd3e1b51') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-hosts") + rules=["os_compute_api:os-hosts"]) def test_show_host_details(self): hosts = self.hosts_client.list_hosts()['hosts'] hosts = [host for host in hosts if host['service'] == 'compute'] diff --git a/patrole_tempest_plugin/tests/api/compute/test_hypervisor_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_hypervisor_rbac.py index 33f40e7a..5488556d 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_hypervisor_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_hypervisor_rbac.py @@ -39,7 +39,7 @@ class HypervisorRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('17bbeb9a-e73e-445f-a771-c794448ef562') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-hypervisors") + rules=["os_compute_api:os-hypervisors"]) def test_list_hypervisors(self): with self.rbac_utils.override_role(self): self.hypervisor_client.list_hypervisors() @@ -47,7 +47,7 @@ class HypervisorRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('36b95c7d-1085-487a-a674-b7c1ca35f520') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-hypervisors") + rules=["os_compute_api:os-hypervisors"]) def test_list_hypervisors_with_details(self): with self.rbac_utils.override_role(self): self.hypervisor_client.list_hypervisors(detail=True) @@ -55,7 +55,7 @@ class HypervisorRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('8a7f6f9e-34a6-4480-8875-bba566c3a581') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-hypervisors") + rules=["os_compute_api:os-hypervisors"]) def test_show_hypervisor(self): with self.rbac_utils.override_role(self): self.hypervisor_client.show_hypervisor(self.hypervisor['id']) @@ -63,7 +63,7 @@ class HypervisorRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('ca0e465c-6365-4a7f-ae58-6f8ddbca06c2') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-hypervisors") + rules=["os_compute_api:os-hypervisors"]) def test_show_hypervisor_statistics(self): with self.rbac_utils.override_role(self): self.hypervisor_client.show_hypervisor_statistics() @@ -71,7 +71,7 @@ class HypervisorRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('109b37c5-91ba-4da5-b2a2-d7618d84406d') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-hypervisors") + rules=["os_compute_api:os-hypervisors"]) def test_show_hypervisor_uptime(self): with self.rbac_utils.override_role(self): self.hypervisor_client.show_hypervisor_uptime( @@ -102,7 +102,7 @@ class HypervisorMaxv252RbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('b86f03cf-2e79-4d88-9eea-62f761591413') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-hypervisors") + rules=["os_compute_api:os-hypervisors"]) def test_list_servers_on_hypervisor(self): with self.rbac_utils.override_role(self): self.hypervisor_client.list_servers_on_hypervisor( @@ -111,7 +111,7 @@ class HypervisorMaxv252RbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('3dbc71c1-8f04-4674-a67c-dcb2fd99b1b4') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-hypervisors") + rules=["os_compute_api:os-hypervisors"]) def test_search_hypervisor(self): with self.rbac_utils.override_role(self): self.hypervisor_client.search_hypervisor( diff --git a/patrole_tempest_plugin/tests/api/compute/test_images_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_images_rbac.py index c988128b..f6c1b67d 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_images_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_images_rbac.py @@ -79,7 +79,7 @@ class ImagesRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('b861f302-b72b-4055-81db-c62ff30b136d') @rbac_rule_validation.action( service="glance", - rule="get_images") + rules=["get_images"]) def test_list_images(self): with self.rbac_utils.override_role(self): self.compute_images_client.list_images() @@ -87,7 +87,7 @@ class ImagesRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('4365ae0f-15ee-4b54-a527-1679faaed140') @rbac_rule_validation.action( service="glance", - rule="get_images") + rules=["get_images"]) def test_list_images_with_details(self): with self.rbac_utils.override_role(self): self.compute_images_client.list_images(detail=True) @@ -95,7 +95,7 @@ class ImagesRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('886dfcae-51bf-4610-9e52-82d7189524c2') @rbac_rule_validation.action( service="glance", - rule="get_image") + rules=["get_image"]) def test_show_image_details(self): with self.rbac_utils.override_role(self): self.compute_images_client.show_image(self.image['id']) @@ -103,7 +103,7 @@ class ImagesRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('5888c7aa-0803-46d4-a3fb-5d4729465cd5') @rbac_rule_validation.action( service="glance", - rule="delete_image") + rules=["delete_image"]) def test_delete_image(self): image = self.glance_image_client.create_image( name=data_utils.rand_name(self.__class__.__name__ + '-image')) @@ -164,7 +164,7 @@ class ImagesMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('dbe09d4c-e615-48cb-b908-a06a0f410a8e') @rbac_rule_validation.action( service="glance", - rule="get_image") + rules=["get_image"]) def test_show_image_metadata_item(self): self.compute_images_client.set_image_metadata(self.image['id'], meta={'foo': 'bar'}) @@ -178,7 +178,7 @@ class ImagesMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('59f66079-d564-47e8-81b0-03c2e84d339e') @rbac_rule_validation.action( service="glance", - rule="get_image") + rules=["get_image"]) def test_list_image_metadata(self): with self.rbac_utils.override_role(self): self.compute_images_client.list_image_metadata(self.image['id']) @@ -186,7 +186,7 @@ class ImagesMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('575604aa-909f-4b1b-a5a5-cfae1f63044b') @rbac_rule_validation.action( service="glance", - rule="modify_image") + rules=["modify_image"]) def test_create_image_metadata(self): with self.rbac_utils.override_role(self): # NOTE(felipemonteiro): Although the name of the client function @@ -200,7 +200,7 @@ class ImagesMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('fb8c4eb6-00e5-454c-b8bc-0e801ec369f1') @rbac_rule_validation.action( service="glance", - rule="modify_image") + rules=["modify_image"]) def test_update_image_metadata(self): with self.rbac_utils.override_role(self): self.compute_images_client.set_image_metadata(self.image['id'], @@ -211,7 +211,7 @@ class ImagesMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('9c7c2036-af9b-49a8-8ba1-09b027ee5def') @rbac_rule_validation.action( service="glance", - rule="modify_image") + rules=["modify_image"]) def test_update_image_metadata_item(self): with self.rbac_utils.override_role(self): self.compute_images_client.set_image_metadata_item( @@ -222,7 +222,7 @@ class ImagesMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('5f0dc4e6-0761-4613-9bde-0a6acdc78f46') @rbac_rule_validation.action( service="glance", - rule="modify_image") + rules=["modify_image"]) def test_delete_image_metadata_item(self): self.compute_images_client.set_image_metadata(self.image['id'], meta={'foo': 'bar'}) @@ -286,7 +286,7 @@ class ImageSizeRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('fe34d2a6-5743-45bf-8f92-a1d703d7c7ab') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:image-size") + rules=["os_compute_api:image-size"]) def test_show_image_includes_image_size(self): with self.rbac_utils.override_role(self): body = self.compute_images_client.show_image(self.image['id'])[ @@ -302,7 +302,7 @@ class ImageSizeRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('08342c7d-297d-42ee-b398-90fce2443792') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:image-size") + rules=["os_compute_api:image-size"]) def test_list_images_with_details_includes_image_size(self): with self.rbac_utils.override_role(self): body = self.compute_images_client.list_images(detail=True)[ diff --git a/patrole_tempest_plugin/tests/api/compute/test_instance_usages_audit_log_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_instance_usages_audit_log_rbac.py index 347b7dfb..163d29a2 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_instance_usages_audit_log_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_instance_usages_audit_log_rbac.py @@ -36,7 +36,7 @@ class InstanceUsagesAuditLogRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('c80246c0-5c13-4ab0-97ba-91551cd53dc1') @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-instance-usage-audit-log") + service="nova", rules=["os_compute_api:os-instance-usage-audit-log"]) def test_list_instance_usage_audit_logs(self): with self.rbac_utils.override_role(self): (self.instance_usages_audit_log_client @@ -44,7 +44,7 @@ class InstanceUsagesAuditLogRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('ded8bfbd-5d90-4a58-aee0-d31231bf3c9b') @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-instance-usage-audit-log") + service="nova", rules=["os_compute_api:os-instance-usage-audit-log"]) def test_show_instance_usage_audit_log(self): now = datetime.datetime.now() diff --git a/patrole_tempest_plugin/tests/api/compute/test_keypairs_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_keypairs_rbac.py index b359ad25..c024a388 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_keypairs_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_keypairs_rbac.py @@ -34,7 +34,7 @@ class KeypairsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('16e0ae81-e05f-48cd-b253-cf31ab0732f0') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-keypairs:create") + rules=["os_compute_api:os-keypairs:create"]) def test_create_keypair(self): with self.rbac_utils.override_role(self): self._create_keypair() @@ -42,7 +42,7 @@ class KeypairsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('85a5eb99-40ec-4e77-9358-bee2cdf9d7df') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-keypairs:show") + rules=["os_compute_api:os-keypairs:show"]) def test_show_keypair(self): kp_name = self._create_keypair()['keypair']['name'] with self.rbac_utils.override_role(self): @@ -51,7 +51,7 @@ class KeypairsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('6bff9f1c-b809-43c1-8d63-61fbd19d49d3') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-keypairs:delete") + rules=["os_compute_api:os-keypairs:delete"]) def test_delete_keypair(self): kp_name = self._create_keypair()['keypair']['name'] with self.rbac_utils.override_role(self): @@ -60,7 +60,7 @@ class KeypairsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('6bb31346-ff7f-4b10-978e-170ac5fcfa3e') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-keypairs:index") + rules=["os_compute_api:os-keypairs:index"]) def test_index_keypair(self): with self.rbac_utils.override_role(self): self.keypairs_client.list_keypairs() diff --git a/patrole_tempest_plugin/tests/api/compute/test_limits_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_limits_rbac.py index 9442a5ae..f1e0393e 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_limits_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_limits_rbac.py @@ -28,7 +28,7 @@ class LimitsRbacTest(rbac_base.BaseV2ComputeRbacTest): raise cls.skipException(msg) @rbac_rule_validation.action(service="nova", - rule="os_compute_api:limits") + rules=["os_compute_api:limits"]) @decorators.idempotent_id('3fb60f83-9a5f-4fdd-89d9-26c3710844a1') def test_show_limits(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/compute/test_migrations_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_migrations_rbac.py index 1597a044..6596ac98 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_migrations_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_migrations_rbac.py @@ -32,7 +32,7 @@ class MigrationsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('5795231c-3729-448c-a072-9a225db1a328') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-migrations:index") + rules=["os_compute_api:os-migrations:index"]) def test_list_services(self): with self.rbac_utils.override_role(self): self.migrations_client.list_migrations() diff --git a/patrole_tempest_plugin/tests/api/compute/test_quota_class_sets_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_quota_class_sets_rbac.py index 2f867636..52c8b3d3 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_quota_class_sets_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_quota_class_sets_rbac.py @@ -57,7 +57,7 @@ class QuotaClassesRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('c10198ed-9df2-440e-a49b-367dadc6de94') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-quota-class-sets:show") + rules=["os_compute_api:os-quota-class-sets:show"]) def test_show_quota_class_set(self): with self.rbac_utils.override_role(self): self.quota_classes_client.show_quota_class_set('default') @@ -65,7 +65,7 @@ class QuotaClassesRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('81889e69-efd2-4e96-bb4c-ee3b646b9755') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-quota-class-sets:update") + rules=["os_compute_api:os-quota-class-sets:update"]) def test_update_quota_class_set(self): # Update the pre-existing quotas for the project_id. quota_class_set = self.quota_classes_client.show_quota_class_set( diff --git a/patrole_tempest_plugin/tests/api/compute/test_quota_sets_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_quota_sets_rbac.py index ec4511aa..10734cb0 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_quota_sets_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_quota_sets_rbac.py @@ -52,7 +52,7 @@ class QuotaSetsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('8229ceb0-db6a-4a2c-99c2-de226905d8b6') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-quota-sets:update") + rules=["os_compute_api:os-quota-sets:update"]) def test_update_quota_set(self): default_quota_set = self.quotas_client.show_default_quota_set( self.tenant_id)['quota_set'] @@ -69,7 +69,7 @@ class QuotaSetsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('58df5613-8f3c-400a-8b4b-2bae624d05e9') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-quota-sets:defaults") + rules=["os_compute_api:os-quota-sets:defaults"]) def test_show_default_quota_set(self): with self.rbac_utils.override_role(self): self.quotas_client.show_default_quota_set(self.tenant_id) @@ -77,7 +77,7 @@ class QuotaSetsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('e8169ac4-c402-4864-894e-aba74e3a459c') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-quota-sets:show") + rules=["os_compute_api:os-quota-sets:show"]) def test_show_quota_set(self): with self.rbac_utils.override_role(self): self.quotas_client.show_quota_set(self.tenant_id) @@ -85,7 +85,7 @@ class QuotaSetsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('4e240644-bf61-4872-9c32-8289ee2fdbbd') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-quota-sets:delete") + rules=["os_compute_api:os-quota-sets:delete"]) def test_delete_quota_set(self): project_name = data_utils.rand_name( self.__class__.__name__ + '-project') @@ -100,7 +100,7 @@ class QuotaSetsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('ac9184b6-f3b3-4e17-a632-4b92c6500f86') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-quota-sets:detail") + rules=["os_compute_api:os-quota-sets:detail"]) def test_show_quota_set_details(self): with self.rbac_utils.override_role(self): self.quotas_client.show_quota_set(self.tenant_id, diff --git a/patrole_tempest_plugin/tests/api/compute/test_security_groups_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_security_groups_rbac.py index fa89a794..33d2ed13 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_security_groups_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_security_groups_rbac.py @@ -55,7 +55,7 @@ class SecurtiyGroupsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-security-groups") + rules=["os_compute_api:os-security-groups"]) @decorators.idempotent_id('3db159c6-a467-469f-9a25-574197885520') def test_list_security_groups_by_server(self): with self.rbac_utils.override_role(self): @@ -64,7 +64,7 @@ class SecurtiyGroupsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-security-groups") + rules=["os_compute_api:os-security-groups"]) @decorators.idempotent_id('ea1ca73f-2d1d-43cb-9a46-900d7927b357') def test_create_security_group_for_server(self): sg_name = self.create_security_group()['name'] @@ -78,7 +78,7 @@ class SecurtiyGroupsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-security-groups") + rules=["os_compute_api:os-security-groups"]) @decorators.idempotent_id('0ad2e856-e2d3-4ac5-a620-f93d0d3d2626') def test_remove_security_group_from_server(self): sg_name = self.create_security_group()['name'] @@ -116,7 +116,7 @@ class SecurityGroupsRbacMaxV235Test(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-security-groups") + rules=["os_compute_api:os-security-groups"]) @decorators.idempotent_id('4ac58e49-48c1-4fca-a6c3-3f95fb99eb77') def test_list_security_groups(self): with self.rbac_utils.override_role(self): @@ -124,7 +124,7 @@ class SecurityGroupsRbacMaxV235Test(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-security-groups") + rules=["os_compute_api:os-security-groups"]) @decorators.idempotent_id('e8fe7f5a-69ee-412d-81d3-a8c7a488b54d') def test_create_security_groups(self): with self.rbac_utils.override_role(self): @@ -132,7 +132,7 @@ class SecurityGroupsRbacMaxV235Test(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-security-groups") + rules=["os_compute_api:os-security-groups"]) @decorators.idempotent_id('59127e8e-302d-11e7-93ae-92361f002671') def test_delete_security_groups(self): sec_group_id = self.create_security_group()['id'] @@ -141,7 +141,7 @@ class SecurityGroupsRbacMaxV235Test(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-security-groups") + rules=["os_compute_api:os-security-groups"]) @decorators.idempotent_id('3de5c6bc-b822-469e-a627-82427d38b067') def test_update_security_groups(self): sec_group_id = self.create_security_group()['id'] @@ -154,7 +154,7 @@ class SecurityGroupsRbacMaxV235Test(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-security-groups") + rules=["os_compute_api:os-security-groups"]) @decorators.idempotent_id('6edc0320-302d-11e7-93ae-92361f002671') def test_show_security_groups(self): sec_group_id = self.create_security_group()['id'] diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_actions_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_actions_rbac.py index 1fe52e90..a64bd202 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_server_actions_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_server_actions_rbac.py @@ -119,7 +119,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): 'Pause is not available.') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-pause-server:pause") + rules=["os_compute_api:os-pause-server:pause"]) def test_pause_server(self): with self.rbac_utils.override_role(self): self._pause_server() @@ -129,7 +129,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): 'Pause is not available.') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-pause-server:unpause") + rules=["os_compute_api:os-pause-server:unpause"]) def test_unpause_server(self): self._pause_server() with self.rbac_utils.override_role(self): @@ -139,7 +139,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:stop") + rules=["os_compute_api:servers:stop"]) @decorators.idempotent_id('ab4a17d2-166f-4a6d-9944-f17baa576cf2') def test_stop_server(self): with self.rbac_utils.override_role(self): @@ -148,7 +148,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:start") + rules=["os_compute_api:servers:start"]) @decorators.idempotent_id('8876bfa9-4d10-406e-a335-a57e451abb12') def test_start_server(self): self._stop_server() @@ -161,7 +161,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:resize") + rules=["os_compute_api:servers:resize"]) @decorators.idempotent_id('0546fbdd-2d8f-4ce8-ac00-f1e2129d0765') @testtools.skipUnless(CONF.compute_feature_enabled.resize, 'Resize is not available.') @@ -172,7 +172,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:revert_resize") + rules=["os_compute_api:servers:revert_resize"]) @decorators.idempotent_id('d41b64b8-a72d-414a-a4c5-94e1eb5e5a96') @testtools.skipUnless(CONF.compute_feature_enabled.resize, 'Resize is not available.') @@ -187,7 +187,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:confirm_resize") + rules=["os_compute_api:servers:confirm_resize"]) @decorators.idempotent_id('f51620cb-dfcb-4e5d-b421-2e0edaa1316e') @testtools.skipUnless(CONF.compute_feature_enabled.resize, 'Resize is not available.') @@ -202,7 +202,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:rebuild") + rules=["os_compute_api:servers:rebuild"]) @decorators.idempotent_id('54b1a30b-c96c-472c-9c83-ccaf6ec7e20b') def test_rebuild_server(self): with self.rbac_utils.override_role(self): @@ -212,7 +212,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:reboot") + rules=["os_compute_api:servers:reboot"]) @decorators.idempotent_id('19f27856-56e1-44f8-8615-7257f6b85cbb') def test_reboot_server(self): with self.rbac_utils.override_role(self): @@ -222,7 +222,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:index") + rules=["os_compute_api:servers:index"]) @decorators.idempotent_id('631f0d86-7607-4198-8312-9da2f05464a4') def test_server_index(self): with self.rbac_utils.override_role(self): @@ -230,7 +230,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:detail") + rules=["os_compute_api:servers:detail"]) @decorators.idempotent_id('96093480-3ce5-4a8b-b569-aed870379c24') def test_server_detail(self): with self.rbac_utils.override_role(self): @@ -238,7 +238,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:detail:get_all_tenants") + rules=["os_compute_api:servers:detail:get_all_tenants"]) @decorators.idempotent_id('a9e5a1c0-acfe-49a2-b2b1-fd8b19d61f71') def test_server_detail_all_tenants(self): with self.rbac_utils.override_role(self): @@ -246,7 +246,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:index:get_all_tenants") + rules=["os_compute_api:servers:index:get_all_tenants"]) @decorators.idempotent_id('4b93ba56-69e6-41f5-82c4-84a5c4c42091') def test_server_index_all_tenants(self): with self.rbac_utils.override_role(self): @@ -254,7 +254,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:show") + rules=["os_compute_api:servers:show"]) @decorators.idempotent_id('eaaf4f51-31b5-497f-8f0f-f527e5f70b83') def test_show_server(self): with self.rbac_utils.override_role(self): @@ -263,7 +263,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.services('image') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:create_image") + rules=["os_compute_api:servers:create_image"]) @decorators.idempotent_id('ba0ac859-99f4-4055-b5e0-e0905a44d331') def test_create_image(self): with self.rbac_utils.override_role(self): @@ -273,7 +273,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.services('image', 'volume') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:create_image:allow_volume_backed") + rules=["os_compute_api:servers:create_image:allow_volume_backed"]) @decorators.idempotent_id('8b869f73-49b3-4cc4-a0ce-ef64f8e1d6f9') def test_create_image_from_volume_backed_server(self): # volume_backed=True creates a volume and create server will be @@ -299,7 +299,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.services('image') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-create-backup") + rules=["os_compute_api:os-create-backup"]) def test_create_backup(self): # Prioritize glance v2 over v1 for deleting/waiting for image status. if CONF.image_feature_enabled.api_v2: @@ -334,7 +334,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('0b70c527-af75-4bed-9ccf-4f1310a8b60f') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-shelve:shelve") + rules=["os_compute_api:os-shelve:shelve"]) def test_shelve_server(self): with self.rbac_utils.override_role(self): self._shelve_server() @@ -343,7 +343,7 @@ class ServerActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('4b6e849a-9182-49ff-9257-e97e751b475e') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-shelve:unshelve") + rules=["os_compute_api:os-shelve:unshelve"]) def test_unshelve_server(self): self._shelve_server() with self.rbac_utils.override_role(self): @@ -364,7 +364,7 @@ class ServerActionsV214RbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-evacuate") + rules=["os_compute_api:os-evacuate"]) @decorators.idempotent_id('78ecef3c-faff-412a-83be-47651963eb21') def test_evacuate_server(self): fake_host_name = data_utils.rand_name( @@ -396,7 +396,7 @@ class ServerActionsV216RbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:show:host_status") + rules=["os_compute_api:servers:show:host_status"]) @decorators.idempotent_id('736da575-86f8-4b2a-9902-dd37dc9a409b') def test_show_server_host_status(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_consoles_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_consoles_rbac.py index fa2f3598..4570ea1f 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_server_consoles_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_server_consoles_rbac.py @@ -37,7 +37,7 @@ class ServerConsolesRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-console-output") + rules=["os_compute_api:os-console-output"]) @decorators.idempotent_id('90fd80f6-456c-11e7-a919-92ebcb67fe33') def test_get_console_output(self): with self.rbac_utils.override_role(self): @@ -61,7 +61,7 @@ class ServerConsolesMaxV25RbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-remote-consoles") + rules=["os_compute_api:os-remote-consoles"]) @decorators.idempotent_id('b0a72c02-9b15-4dcb-b186-efe8753370ab') def test_get_vnc_console_output(self): with self.rbac_utils.override_role(self): @@ -86,7 +86,7 @@ class ServerConsolesV26RbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-remote-consoles") + rules=["os_compute_api:os-remote-consoles"]) @decorators.idempotent_id('879597de-87e0-4da9-a60a-28c8088dc508') def test_get_remote_console_output(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_groups_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_groups_rbac.py index 1674b1a0..26ef0fea 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_server_groups_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_server_groups_rbac.py @@ -31,7 +31,7 @@ class ServerGroupsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-groups:create") + rules=["os_compute_api:os-server-groups:create"]) @decorators.idempotent_id('7f3eae94-6130-47e9-81ac-34009f55be2f') def test_create_server_group(self): with self.rbac_utils.override_role(self): @@ -39,7 +39,7 @@ class ServerGroupsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-groups:delete") + rules=["os_compute_api:os-server-groups:delete"]) @decorators.idempotent_id('832d9be3-632e-47b2-93d2-5897db43e3e2') def test_delete_server_group(self): server_group = self.create_test_server_group() @@ -48,7 +48,7 @@ class ServerGroupsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-groups:index") + rules=["os_compute_api:os-server-groups:index"]) @decorators.idempotent_id('5eccd67f-5945-483b-b1c8-de851ebfc1c1') def test_list_server_groups(self): with self.rbac_utils.override_role(self): @@ -56,7 +56,7 @@ class ServerGroupsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-groups:show") + rules=["os_compute_api:os-server-groups:show"]) @decorators.idempotent_id('62534e3f-7e99-4a3d-a08e-33e056460cf2') def test_show_server_group(self): server_group = self.create_test_server_group() diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_metadata_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_metadata_rbac.py index 05b1758d..6193938c 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_server_metadata_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_server_metadata_rbac.py @@ -35,7 +35,7 @@ class ServerMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('b07bbc27-58e2-4581-869d-ad228cec5d9a') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:server-metadata:index") + rules=["os_compute_api:server-metadata:index"]) def test_list_server_metadata(self): with self.rbac_utils.override_role(self): self.servers_client.list_server_metadata(self.server['id']) @@ -43,7 +43,7 @@ class ServerMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('6e76748b-2417-4fa2-b41a-c0cc4bff356b') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:server-metadata:update_all") + rules=["os_compute_api:server-metadata:update_all"]) def test_set_server_metadata(self): with self.rbac_utils.override_role(self): self.servers_client.set_server_metadata(self.server['id'], {}) @@ -51,7 +51,7 @@ class ServerMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('1060bac4-fe16-4a77-be64-d8e482a06eab') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:server-metadata:create") + rules=["os_compute_api:server-metadata:create"]) def test_update_server_metadata(self): with self.rbac_utils.override_role(self): self.servers_client.update_server_metadata(self.server['id'], {}) @@ -59,7 +59,7 @@ class ServerMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('93dd8323-d3fa-48d1-8bd6-91c1b62fc341') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:server-metadata:show") + rules=["os_compute_api:server-metadata:show"]) def test_show_server_metadata_item(self): with self.rbac_utils.override_role(self): self.servers_client.show_server_metadata_item( @@ -68,7 +68,7 @@ class ServerMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('79511293-4bd7-447d-ba7e-634d0f4da70c') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:server-metadata:update") + rules=["os_compute_api:server-metadata:update"]) def test_set_server_metadata_item(self): with self.rbac_utils.override_role(self): self.servers_client.set_server_metadata_item( @@ -77,7 +77,7 @@ class ServerMetadataRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('feec5064-678d-40bc-a88f-c856e18d1e31') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:server-metadata:delete") + rules=["os_compute_api:server-metadata:delete"]) def test_delete_server_metadata_item(self): with self.rbac_utils.override_role(self): self.servers_client.delete_server_metadata_item( diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_migrations_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_migrations_rbac.py index a867b81d..8ae8bc04 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_server_migrations_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_server_migrations_rbac.py @@ -62,7 +62,7 @@ class MigrateServerV225RbacTest(base.BaseV2ComputeRbacTest): 'Cold migration not available.') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-migrate-server:migrate") + rules=["os_compute_api:os-migrate-server:migrate"]) @decorators.idempotent_id('c6f1607c-9fed-4c00-807e-9ba675b98b1b') def test_cold_migration(self): server = self.create_test_server(wait_until="ACTIVE") @@ -76,7 +76,7 @@ class MigrateServerV225RbacTest(base.BaseV2ComputeRbacTest): 'Live migration feature is not enabled.') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-migrate-server:migrate_live") + rules=["os_compute_api:os-migrate-server:migrate_live"]) @decorators.idempotent_id('33520834-72c8-4edb-a189-a2e0fc9eb0d3') def test_migration_live(self): server_id = self.create_test_server(wait_until="ACTIVE", diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_misc_policy_actions_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_misc_policy_actions_rbac.py index 56817996..88bea251 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_server_misc_policy_actions_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_server_misc_policy_actions_rbac.py @@ -81,7 +81,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-admin-actions', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-admin-actions:reset_state") + rules=["os_compute_api:os-admin-actions:reset_state"]) @decorators.idempotent_id('ae84dd0b-f364-462e-b565-3457f9c019ef') def test_reset_server_state(self): """Test reset server state, part of os-admin-actions.""" @@ -93,7 +93,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-admin-actions', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-admin-actions:inject_network_info") + rules=["os_compute_api:os-admin-actions:inject_network_info"]) @decorators.idempotent_id('ce48c340-51c1-4cff-9b6e-0cc5ef008630') def test_inject_network_info(self): """Test inject network info, part of os-admin-actions.""" @@ -103,7 +103,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-admin-actions', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-admin-actions:reset_network") + rules=["os_compute_api:os-admin-actions:reset_network"]) @decorators.idempotent_id('2911a242-15c4-4fcb-80d5-80a8930661b0') def test_reset_network(self): """Test reset network, part of os-admin-actions.""" @@ -114,7 +114,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): 'Change password not available.') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-admin-password") + rules=["os_compute_api:os-admin-password"]) @decorators.idempotent_id('908a7d59-3a66-441c-94cf-38e57ed14956') def test_change_server_password(self): """Test change admin password, part of os-admin-password.""" @@ -135,7 +135,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('2c82e819-382d-4d6f-87f0-a45954cbbc64') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-config-drive") + rules=["os_compute_api:os-config-drive"]) def test_list_servers_with_details_config_drive(self): """Test list servers with config_drive property in response body.""" with self.rbac_utils.override_role(self): @@ -152,7 +152,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('55c62ef7-b72b-4970-acc6-05b0a4316e5d') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-config-drive") + rules=["os_compute_api:os-config-drive"]) def test_show_server_config_drive(self): """Test show server with config_drive property in response body.""" with self.rbac_utils.override_role(self): @@ -166,7 +166,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('189bfed4-1e6d-475c-bb8c-d57e60895391') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-deferred-delete") + rules=["os_compute_api:os-deferred-delete"]) def test_force_delete_server(self): """Test force delete server, part of os-deferred-delete.""" with self.rbac_utils.override_role(self): @@ -179,7 +179,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='OS-EXT-AZ', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-extended-availability-zone") + rules=["os_compute_api:os-extended-availability-zone"]) def test_list_servers_with_details_extended_availability_zone(self): """Test list servers OS-EXT-AZ:availability_zone attr in resp body.""" expected_attr = 'OS-EXT-AZ:availability_zone' @@ -197,7 +197,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='OS-EXT-AZ', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-extended-availability-zone") + rules=["os_compute_api:os-extended-availability-zone"]) def test_show_server_extended_availability_zone(self): """Test show server OS-EXT-AZ:availability_zone attr in resp body.""" expected_attr = 'OS-EXT-AZ:availability_zone' @@ -214,7 +214,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='OS-EXT-SRV-ATTR', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-extended-server-attributes") + rules=["os_compute_api:os-extended-server-attributes"]) def test_list_servers_extended_server_attributes(self): """Test list servers with details, with extended server attributes in response body. @@ -238,7 +238,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='OS-EXT-SRV-ATTR', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-extended-server-attributes") + rules=["os_compute_api:os-extended-server-attributes"]) def test_show_server_extended_server_attributes(self): """Test show server with extended server attributes in response body. @@ -262,7 +262,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='OS-EXT-STS', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-extended-status") + rules=["os_compute_api:os-extended-status"]) def test_list_servers_extended_status(self): """Test list servers with extended properties in response body.""" with self.rbac_utils.override_role(self): @@ -281,7 +281,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='OS-EXT-STS', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-extended-status") + rules=["os_compute_api:os-extended-status"]) def test_show_server_extended_status(self): """Test show server with extended properties in response body.""" with self.rbac_utils.override_role(self): @@ -300,7 +300,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-extended-volumes', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-extended-volumes") + rules=["os_compute_api:os-extended-volumes"]) def test_list_servers_with_details_extended_volumes(self): """Test list servers os-extended-volumes:volumes_attached attr in resp body. @@ -319,7 +319,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-extended-volumes', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-extended-volumes") + rules=["os_compute_api:os-extended-volumes"]) def test_show_server_extended_volumes(self): """Test show server os-extended-volumes:volumes_attached attr in resp body. @@ -336,7 +336,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('9d1b131d-407e-4fa3-8eef-eb2c4526f1da') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-instance-actions") + rules=["os_compute_api:os-instance-actions"]) def test_list_instance_actions(self): """Test list instance actions, part of os-instance-actions.""" with self.rbac_utils.override_role(self): @@ -346,7 +346,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('eb04c439-4215-4029-9ccb-5b3c041bfc25') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-instance-actions:events") + rules=["os_compute_api:os-instance-actions:events"]) def test_show_instance_action(self): """Test show instance action, part of os-instance-actions. @@ -372,7 +372,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): "This API extension policy was removed in Stein") @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-keypairs") + rules=["os_compute_api:os-keypairs"]) @decorators.idempotent_id('81e6fa34-c06b-42ca-b195-82bf8699b940') def test_show_server_keypair(self): with self.rbac_utils.override_role(self): @@ -386,7 +386,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): "This API extension policy was removed in Stein") @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-keypairs") + rules=["os_compute_api:os-keypairs"]) @decorators.idempotent_id('41ca4280-ec59-4b80-a9b1-6bc6366faf39') def test_list_servers_keypairs(self): with self.rbac_utils.override_role(self): @@ -397,7 +397,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-lock-server:lock") + rules=["os_compute_api:os-lock-server:lock"]) @decorators.idempotent_id('b81e10fb-1864-498f-8c1d-5175c6fec5fb') def test_lock_server(self): """Test lock server, part of os-lock-server.""" @@ -407,7 +407,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-lock-server:unlock") + rules=["os_compute_api:os-lock-server:unlock"]) @decorators.idempotent_id('d50ef8e8-4bce-11e7-b114-b2f933d5fe66') def test_unlock_server(self): """Test unlock server, part of os-lock-server.""" @@ -438,7 +438,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-rescue', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-rescue") + rules=["os_compute_api:os-rescue"]) @decorators.idempotent_id('fbbb2afc-ed0e-4552-887d-ac00fb5d436e') def test_rescue_server(self): """Test rescue server, part of os-rescue.""" @@ -451,7 +451,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-rescue', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-rescue") + rules=["os_compute_api:os-rescue"]) def test_unrescue_server(self): """Test unrescue server, part of os-rescue.""" self.servers_client.rescue_server(self.server['id']) @@ -466,7 +466,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-server-diagnostics', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-diagnostics") + rules=["os_compute_api:os-server-diagnostics"]) @decorators.idempotent_id('5dabfcc4-bedb-417b-8247-b3ee7c5c0f3e') def test_show_server_diagnostics(self): """Test show server diagnostics, part of os-server-diagnostics.""" @@ -477,7 +477,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('aaf43f78-c178-4581-ac18-14afd3f1f6ba') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-password") + rules=["os_compute_api:os-server-password"]) def test_delete_server_password(self): """Test delete server password, part of os-server-password.""" with self.rbac_utils.override_role(self): @@ -486,7 +486,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-server-password', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-password") + rules=["os_compute_api:os-server-password"]) @decorators.idempotent_id('f677971a-7d20-493c-977f-6ff0a74b5b2c') def test_get_server_password(self): """Test show server password, part of os-server-password.""" @@ -498,7 +498,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='OS-SRV-USG', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-usage") + rules=["os_compute_api:os-server-usage"]) @decorators.idempotent_id('f0437ead-b9fb-462a-9f3d-ce53fac9d57a') def test_show_server_usage(self): """Test show server usage, part of os-server-usage. @@ -520,7 +520,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-simple-tenant-usage', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-simple-tenant-usage:list") + rules=["os_compute_api:os-simple-tenant-usage:list"]) @decorators.idempotent_id('2aef094f-0452-4df6-a66a-0ec22a92b16e') def test_list_simple_tenant_usages(self): """Test list tenant usages, part of os-simple-tenant-usage.""" @@ -530,7 +530,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-simple-tenant-usage', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-simple-tenant-usage:show") + rules=["os_compute_api:os-simple-tenant-usage:show"]) @decorators.idempotent_id('fe7eacda-15c4-4bf7-93ef-1091c4546a9d') def test_show_simple_tenant_usage(self): """Test show tenant usage, part of os-simple-tenant-usage.""" @@ -544,7 +544,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('b775930f-237c-431c-83ae-d33ed1b9700b') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-suspend-server:suspend") + rules=["os_compute_api:os-suspend-server:suspend"]) def test_suspend_server(self): """Test suspend server, part of os-suspend-server.""" with self.rbac_utils.override_role(self): @@ -558,7 +558,7 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('4d90bd02-11f8-45b1-a8a1-534665584675') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-suspend-server:resume") + rules=["os_compute_api:os-suspend-server:resume"]) def test_resume_server(self): """Test resume server, part of os-suspend-server.""" self.servers_client.suspend_server(self.server['id']) @@ -654,7 +654,7 @@ class MiscPolicyActionsNetworkRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('ddf53cb6-4a0a-4e5a-91e3-6c32aaa3b9b6') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-attach-interfaces") + rules=["os_compute_api:os-attach-interfaces"]) def test_list_interfaces(self): """Test list interfaces, part of os-attach-interfaces.""" with self.rbac_utils.override_role(self): @@ -666,7 +666,7 @@ class MiscPolicyActionsNetworkRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-attach-interfaces', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-attach-interfaces") + rules=["os_compute_api:os-attach-interfaces"]) def test_show_interface(self): """Test show interfaces, part of os-attach-interfaces.""" interface = self._attach_interface_to_server() @@ -680,7 +680,7 @@ class MiscPolicyActionsNetworkRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('d2d3a24d-4738-4bce-a287-36d664746cde') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-attach-interfaces:create") + rules=["os_compute_api:os-attach-interfaces:create"]) def test_create_interface(self): """Test create interface, part of os-attach-interfaces.""" network_id = self.network['id'] @@ -704,7 +704,7 @@ class MiscPolicyActionsNetworkRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('55b05692-ed44-4608-a84c-cd4219c82799') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-attach-interfaces:delete") + rules=["os_compute_api:os-attach-interfaces:delete"]) def test_delete_interface(self): """Test delete interface, part of os-attach-interfaces.""" interface = self._attach_interface_to_server() @@ -719,7 +719,7 @@ class MiscPolicyActionsNetworkRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-ips', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:ips:index") + rules=["os_compute_api:ips:index"]) def test_list_addresses(self): """Test list server addresses, part of ips policy family.""" with self.rbac_utils.override_role(self): @@ -729,7 +729,7 @@ class MiscPolicyActionsNetworkRbacTest(rbac_base.BaseV2ComputeRbacTest): @utils.requires_ext(extension='os-ips', service='compute') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:ips:show") + rules=["os_compute_api:ips:show"]) def test_list_addresses_by_network(self): """Test list server addresses by network, part of ips policy family.""" addresses = self.servers_client.list_addresses(self.server['id'])[ @@ -744,7 +744,7 @@ class MiscPolicyActionsNetworkRbacTest(rbac_base.BaseV2ComputeRbacTest): "Interface attachment is not available.") @utils.requires_ext(extension='os-multinic', service='compute') @rbac_rule_validation.action( - service="nova", rule="os_compute_api:os-multinic") + service="nova", rules=["os_compute_api:os-multinic"]) @decorators.idempotent_id('bd3e2c74-130a-40f0-8085-124d93fe67da') def test_add_fixed_ip(self): """Test add fixed ip to server network, part of os-multinic.""" diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_rbac.py index cae31f62..7a9c902d 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_server_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_server_rbac.py @@ -47,7 +47,7 @@ class ComputeServersRbacTest(base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:create") + rules=["os_compute_api:servers:create"]) @decorators.idempotent_id('4f34c73a-6ddc-4677-976f-71320fa855bd') def test_create_server(self): with self.rbac_utils.override_role(self): @@ -61,7 +61,7 @@ class ComputeServersRbacTest(base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:create:forced_host") + rules=["os_compute_api:servers:create:forced_host"]) @decorators.idempotent_id('0ae3c401-52ab-41bc-ab96-c598a65d9ae5') def test_create_server_forced_host(self): # Retrieve 'nova' zone host information from availiability_zone_list @@ -88,7 +88,7 @@ class ComputeServersRbacTest(base.BaseV2ComputeRbacTest): @utils.services('volume') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:create:attach_volume") + rules=["os_compute_api:servers:create:attach_volume"]) @decorators.idempotent_id('eeddac5e-15aa-454f-838d-db608aae4dd8') def test_create_server_attach_volume(self): # To create a bootable volume, the UUID of the image from which @@ -126,7 +126,7 @@ class ComputeServersRbacTest(base.BaseV2ComputeRbacTest): @utils.services('network') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:create:attach_network") + rules=["os_compute_api:servers:create:attach_network"]) @decorators.idempotent_id('b44cd4ff-50a4-42ce-ada3-724e213cd540') def test_create_server_attach_network(self): def _create_network_resources(): @@ -165,7 +165,7 @@ class ComputeServersRbacTest(base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:delete") + rules=["os_compute_api:servers:delete"]) @decorators.idempotent_id('062e3440-e873-4b41-9317-bf6d8be50c12') def test_delete_server(self): server = self.create_test_server(wait_until='ACTIVE') @@ -177,7 +177,7 @@ class ComputeServersRbacTest(base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:servers:update") + rules=["os_compute_api:servers:update"]) @decorators.idempotent_id('077b17cb-5621-43b9-8adf-5725f0d7a863') def test_update_server(self): new_name = data_utils.rand_name(self.__class__.__name__ + '-server') diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_tags_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_tags_rbac.py index 70e7da90..ac571b99 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_server_tags_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_server_tags_rbac.py @@ -47,7 +47,7 @@ class ServerTagsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('99e73dd3-adec-4044-b46c-84bdded35d09') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-tags:index") + rules=["os_compute_api:os-server-tags:index"]) def test_list_tags(self): with self.rbac_utils.override_role(self): self.servers_client.list_tags(self.server['id']) @@ -55,7 +55,7 @@ class ServerTagsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('9297c99e-94eb-429f-93cf-9b1838e33622') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-tags:show") + rules=["os_compute_api:os-server-tags:show"]) def test_check_tag_existence(self): tag_name = self._add_tag_to_server() with self.rbac_utils.override_role(self): @@ -65,7 +65,7 @@ class ServerTagsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('0d84ee94-d3ca-4635-8edf-b7f67ab8e4a3') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-tags:update") + rules=["os_compute_api:os-server-tags:update"]) def test_update_tag(self): with self.rbac_utils.override_role(self): self._add_tag_to_server() @@ -73,7 +73,7 @@ class ServerTagsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('115c2694-00aa-41ee-99f6-9eab4040c182') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-tags:delete") + rules=["os_compute_api:os-server-tags:delete"]) def test_delete_tag(self): tag_name = self._add_tag_to_server() with self.rbac_utils.override_role(self): @@ -82,7 +82,7 @@ class ServerTagsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('a8e19b87-6580-4bc8-9933-e62561ff667d') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-tags:update_all") + rules=["os_compute_api:os-server-tags:update_all"]) def test_update_all_tags(self): new_tag_name = data_utils.rand_name(self.__class__.__name__ + '-tag') with self.rbac_utils.override_role(self): @@ -92,7 +92,7 @@ class ServerTagsRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('89d51936-e333-42f9-a045-132a4865ba1a') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-server-tags:delete_all") + rules=["os_compute_api:os-server-tags:delete_all"]) def test_delete_all_tags(self): with self.rbac_utils.override_role(self): self.servers_client.delete_all_tags(self.server['id']) diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_volume_attachments_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_volume_attachments_rbac.py index a510d1eb..cb76605d 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_server_volume_attachments_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_server_volume_attachments_rbac.py @@ -51,7 +51,7 @@ class ServerVolumeAttachmentRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes-attachments:index") + rules=["os_compute_api:os-volumes-attachments:index"]) @decorators.idempotent_id('529b668b-6edb-41d5-8886-d7dbd0614678') def test_list_volume_attachments(self): with self.rbac_utils.override_role(self): @@ -60,7 +60,7 @@ class ServerVolumeAttachmentRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes-attachments:create") + rules=["os_compute_api:os-volumes-attachments:create"]) @decorators.idempotent_id('21c2c3fd-fbe8-41b1-8ef8-115ec47d54c1') def test_create_volume_attachment(self): with self.rbac_utils.override_role(self): @@ -69,7 +69,7 @@ class ServerVolumeAttachmentRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes-attachments:show") + rules=["os_compute_api:os-volumes-attachments:show"]) @decorators.idempotent_id('997df9c2-6e54-47b6-ab74-e4fdb500f385') def test_show_volume_attachment(self): attachment = self.attach_volume(self.server, self.volume) @@ -83,7 +83,7 @@ class ServerVolumeAttachmentRbacTest(rbac_base.BaseV2ComputeRbacTest): 'In-place swapping of volumes not supported.') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes-attachments:update") + rules=["os_compute_api:os-volumes-attachments:update"]) @decorators.idempotent_id('bd667186-eca6-4b78-ab6a-3e2fabcb971f') def test_update_volume_attachment(self): attachment = self.attach_volume(self.server, self.volume) @@ -108,7 +108,7 @@ class ServerVolumeAttachmentRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes-attachments:delete") + rules=["os_compute_api:os-volumes-attachments:delete"]) @decorators.idempotent_id('12b03e90-d087-46af-9c4d-507d021c4984') def test_delete_volume_attachment(self): self.attach_volume(self.server, self.volume) diff --git a/patrole_tempest_plugin/tests/api/compute/test_services_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_services_rbac.py index 183d9902..f32e1179 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_services_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_services_rbac.py @@ -31,7 +31,7 @@ class ServicesRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-services") + rules=["os_compute_api:os-services"]) @decorators.idempotent_id('7472261b-9c6d-453a-bcb3-aecaa29ad281') def test_list_services(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/compute/test_tenant_networks_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_tenant_networks_rbac.py index 49fb34c3..a4ccc10c 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_tenant_networks_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_tenant_networks_rbac.py @@ -54,7 +54,7 @@ class TenantNetworksRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('42b39ba1-14aa-4799-9518-34367d0da67a') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-tenant-networks") + rules=["os_compute_api:os-tenant-networks"]) def test_list_show_tenant_networks(self): with self.rbac_utils.override_role(self): self.tenant_networks_client.list_tenant_networks() diff --git a/patrole_tempest_plugin/tests/api/compute/test_virtual_interfaces_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_virtual_interfaces_rbac.py index ae77a349..8376be06 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_virtual_interfaces_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_virtual_interfaces_rbac.py @@ -45,7 +45,7 @@ class VirtualInterfacesRbacTest(rbac_base.BaseV2ComputeRbacTest): @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-virtual-interfaces") + rules=["os_compute_api:os-virtual-interfaces"]) @decorators.idempotent_id('fc719ae3-0f73-4689-8378-1b841f0f2818') def test_list_virtual_interfaces(self): """Test list virtual interfaces, part of os-virtual-interfaces. diff --git a/patrole_tempest_plugin/tests/api/compute/test_volume_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_volume_rbac.py index b07fb3fc..3c693ab8 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_volume_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_volume_rbac.py @@ -60,7 +60,7 @@ class VolumeRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('2402013e-a624-43e3-9518-44a5d1dbb32d') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes") + rules=["os_compute_api:os-volumes"]) def test_create_volume(self): with self.rbac_utils.override_role(self): volume = self.volumes_extensions_client.create_volume( @@ -73,7 +73,7 @@ class VolumeRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('69b3888c-dff2-47b0-9fa4-0672619c9054') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes") + rules=["os_compute_api:os-volumes"]) def test_list_volumes(self): with self.rbac_utils.override_role(self): self.volumes_extensions_client.list_volumes() @@ -81,7 +81,7 @@ class VolumeRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('4ba0a820-040f-488b-86bb-be2e920ea12c') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes") + rules=["os_compute_api:os-volumes"]) def test_show_volume(self): with self.rbac_utils.override_role(self): self.volumes_extensions_client.show_volume(self.volume['id']) @@ -89,7 +89,7 @@ class VolumeRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('6e7870f2-1bb2-4b58-96f8-6782071ef327') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes") + rules=["os_compute_api:os-volumes"]) def test_delete_volume(self): volume = self.create_volume() with self.rbac_utils.override_role(self): @@ -98,7 +98,7 @@ class VolumeRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('0c3eaa4f-69d6-4a13-9dda-19585f36b1c1') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes") + rules=["os_compute_api:os-volumes"]) def test_create_snapshot(self): s_name = data_utils.rand_name(self.__class__.__name__ + '-Snapshot') with self.rbac_utils.override_role(self): @@ -110,7 +110,7 @@ class VolumeRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('e944e816-416c-11e7-a919-92ebcb67fe33') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes") + rules=["os_compute_api:os-volumes"]) def test_list_snapshots(self): with self.rbac_utils.override_role(self): self.snapshots_extensions_client.list_snapshots() @@ -118,7 +118,7 @@ class VolumeRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('19c2e6bd-585b-472f-a8d7-71ea9299c655') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes") + rules=["os_compute_api:os-volumes"]) def test_show_snapshot(self): s_name = data_utils.rand_name(self.__class__.__name__ + '-Snapshot') snapshot = self.snapshots_extensions_client.create_snapshot( @@ -131,7 +131,7 @@ class VolumeRbacTest(rbac_base.BaseV2ComputeRbacTest): @decorators.idempotent_id('f4f5635c-416c-11e7-a919-92ebcb67fe33') @rbac_rule_validation.action( service="nova", - rule="os_compute_api:os-volumes") + rules=["os_compute_api:os-volumes"]) def test_delete_snapshot(self): s_name = data_utils.rand_name(self.__class__.__name__ + '-Snapshot') snapshot = self.snapshots_extensions_client.create_snapshot( diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_application_credentials_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_application_credentials_rbac.py index c7a60330..1d466f34 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_application_credentials_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_application_credentials_rbac.py @@ -52,23 +52,26 @@ class ApplicationCredentialsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): return application_credential @decorators.idempotent_id('b53bee14-e9df-4929-b257-6def76c12e4d') - @rbac_rule_validation.action(service="keystone", - rule="identity:create_application_credential") + @rbac_rule_validation.action( + service="keystone", + rules=["identity:create_application_credential"]) def test_create_application_credential(self): with self.rbac_utils.override_role(self): self._create_application_credential() @decorators.idempotent_id('58b3c3a0-5ad0-44f7-8da7-0736f71f7168') - @rbac_rule_validation.action(service="keystone", - rule="identity:list_application_credentials") + @rbac_rule_validation.action( + service="keystone", + rules=["identity:list_application_credentials"]) def test_list_application_credentials(self): with self.rbac_utils.override_role(self): self.application_credentials_client.list_application_credentials( user_id=self.user_id) @decorators.idempotent_id('d7b13968-a8a6-47fd-8e1d-7cc7f565c7f8') - @rbac_rule_validation.action(service="keystone", - rule="identity:get_application_credential") + @rbac_rule_validation.action( + service="keystone", + rules=["identity:get_application_credential"]) def test_show_application_credential(self): app_cred = self._create_application_credential() with self.rbac_utils.override_role(self): @@ -76,8 +79,9 @@ class ApplicationCredentialsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): user_id=self.user_id, application_credential_id=app_cred['id']) @decorators.idempotent_id('521b7c0f-1dd5-47a6-ae95-95c0323d7735') - @rbac_rule_validation.action(service="keystone", - rule="identity:delete_application_credential") + @rbac_rule_validation.action( + service="keystone", + rules=["identity:delete_application_credential"]) def test_delete_application_credential(self): app_cred = self._create_application_credential() with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_auth_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_auth_rbac.py index 83936961..a63192f3 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_auth_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_auth_rbac.py @@ -32,14 +32,14 @@ class IdentityAuthV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('2a9fbf7f-6feb-4161-ae4b-faf7d6421b1a') @rbac_rule_validation.action(service="keystone", - rule="identity:get_auth_projects") + rules=["identity:get_auth_projects"]) def test_list_auth_projects(self): with self.rbac_utils.override_role(self): self.identity_client.list_auth_projects() @decorators.idempotent_id('6a40af0d-7265-4657-b6b2-87a2828e263e') @rbac_rule_validation.action(service="keystone", - rule="identity:get_auth_domains") + rules=["identity:get_auth_domains"]) def test_list_auth_domain(self): with self.rbac_utils.override_role(self): self.identity_client.list_auth_domains() diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_credentials_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_credentials_rbac.py index af6feb61..977a8306 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_credentials_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_credentials_rbac.py @@ -29,7 +29,7 @@ class IdentityCredentialsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): return credential @rbac_rule_validation.action(service="keystone", - rule="identity:create_credential") + rules=["identity:create_credential"]) @decorators.idempotent_id('c1ab6d34-c59f-4ae1-bae9-bb3c1089b48e') def test_create_credential(self): project = self.setup_test_project() @@ -38,7 +38,7 @@ class IdentityCredentialsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.setup_test_credential(user=user) @rbac_rule_validation.action(service="keystone", - rule="identity:update_credential") + rules=["identity:update_credential"]) @decorators.idempotent_id('cfb05ce3-bffb-496e-a3c2-9515d730da63') def test_update_credential(self): credential = self._create_user_project_and_credential() @@ -54,7 +54,7 @@ class IdentityCredentialsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): project_id=credential['project_id']) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_credential") + rules=["identity:delete_credential"]) @decorators.idempotent_id('87ab42af-8d41-401b-90df-21e72919fcde') def test_delete_credential(self): credential = self._create_user_project_and_credential() @@ -63,7 +63,7 @@ class IdentityCredentialsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.creds_client.delete_credential(credential['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:get_credential") + rules=["identity:get_credential"]) @decorators.idempotent_id('1b6eeae6-f1e8-4cdf-8903-1c002b1fc271') def test_show_credential(self): credential = self._create_user_project_and_credential() @@ -72,7 +72,7 @@ class IdentityCredentialsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.creds_client.show_credential(credential['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_credentials") + rules=["identity:list_credentials"]) @decorators.idempotent_id('3de303e2-12a7-4811-805a-f18906472038') def test_list_credentials(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_domain_configuration_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_domain_configuration_rbac.py index 8db89063..4fa39379 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_domain_configuration_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_domain_configuration_rbac.py @@ -53,14 +53,14 @@ class DomainConfigurationV3RbacTest(rbac_base.BaseIdentityV3RbacTest): return domain_config @rbac_rule_validation.action(service="keystone", - rule="identity:create_domain_config") + rules=["identity:create_domain_config"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd115') def test_create_domain_config(self): with self.rbac_utils.override_role(self): self._create_domain_config(self.domain_id) @rbac_rule_validation.action(service="keystone", - rule="identity:get_domain_config") + rules=["identity:get_domain_config"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd118') def test_show_domain_config(self): with self.rbac_utils.override_role(self): @@ -68,7 +68,7 @@ class DomainConfigurationV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('1b539f95-4991-4e09-960f-fa771e1007d7') @rbac_rule_validation.action(service="keystone", - rule="identity:get_domain_config") + rules=["identity:get_domain_config"]) def test_show_domain_group_config(self): with self.rbac_utils.override_role(self): self.domain_config_client.show_domain_group_config( @@ -76,7 +76,7 @@ class DomainConfigurationV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('590c774d-a294-44f8-866e-aac9f4ab3809') @rbac_rule_validation.action(service="keystone", - rule="identity:get_domain_config") + rules=["identity:get_domain_config"]) def test_show_domain_group_option_config(self): with self.rbac_utils.override_role(self): self.domain_config_client.show_domain_group_option_config( @@ -85,7 +85,7 @@ class DomainConfigurationV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('21053885-1ce3-4167-b5e3-e470253481da') @rbac_rule_validation.action( service="keystone", - rule="identity:get_security_compliance_domain_config") + rules=["identity:get_security_compliance_domain_config"]) def test_show_security_compliance_domain_config(self): # The "security_compliance" group can only be shown for the default # domain. @@ -95,28 +95,28 @@ class DomainConfigurationV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('d1addd10-9ae4-4360-9961-47324fd22f23') @rbac_rule_validation.action(service="keystone", - rule="identity:get_domain_config_default") + rules=["identity:get_domain_config_default"]) def test_show_default_config_settings(self): with self.rbac_utils.override_role(self): self.domain_config_client.show_default_config_settings() @decorators.idempotent_id('63183377-251f-4622-81f0-6b58a8a285c9') @rbac_rule_validation.action(service="keystone", - rule="identity:get_domain_config_default") + rules=["identity:get_domain_config_default"]) def test_show_default_group_config(self): with self.rbac_utils.override_role(self): self.domain_config_client.show_default_group_config('identity') @decorators.idempotent_id('6440e9c1-e8da-474d-9118-89996fffe5f8') @rbac_rule_validation.action(service="keystone", - rule="identity:get_domain_config_default") + rules=["identity:get_domain_config_default"]) def test_show_default_group_option(self): with self.rbac_utils.override_role(self): self.domain_config_client.show_default_group_option('identity', 'driver') @rbac_rule_validation.action(service="keystone", - rule="identity:update_domain_config") + rules=["identity:update_domain_config"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd116') def test_update_domain_config(self): updated_config = {'ldap': {'url': data_utils.rand_url()}} @@ -126,7 +126,7 @@ class DomainConfigurationV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('6e32bf96-dbe9-4ac8-b814-0e79fa948285') @rbac_rule_validation.action(service="keystone", - rule="identity:update_domain_config") + rules=["identity:update_domain_config"]) def test_update_domain_group_config(self): with self.rbac_utils.override_role(self): self.domain_config_client.update_domain_group_config( @@ -134,14 +134,14 @@ class DomainConfigurationV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('d2c510da-a077-4c67-9522-27745ef2812b') @rbac_rule_validation.action(service="keystone", - rule="identity:update_domain_config") + rules=["identity:update_domain_config"]) def test_update_domain_group_option_config(self): with self.rbac_utils.override_role(self): self.domain_config_client.update_domain_group_option_config( self.domain_id, 'identity', 'driver', driver='ldap') @rbac_rule_validation.action(service="keystone", - rule="identity:delete_domain_config") + rules=["identity:delete_domain_config"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd117') def test_delete_domain_config(self): with self.rbac_utils.override_role(self): @@ -149,7 +149,7 @@ class DomainConfigurationV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('f479694b-df02-4d5a-88b6-c8b52f9341eb') @rbac_rule_validation.action(service="keystone", - rule="identity:delete_domain_config") + rules=["identity:delete_domain_config"]) def test_delete_domain_group_config(self): with self.rbac_utils.override_role(self): self.domain_config_client.delete_domain_group_config( @@ -157,7 +157,7 @@ class DomainConfigurationV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('f594bde3-31c9-414f-922d-0ddafdc0ca40') @rbac_rule_validation.action(service="keystone", - rule="identity:delete_domain_config") + rules=["identity:delete_domain_config"]) def test_delete_domain_group_option_config(self): with self.rbac_utils.override_role(self): self.domain_config_client.delete_domain_group_option_config( diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_domains_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_domains_rbac.py index 3837051c..ab388765 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_domains_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_domains_rbac.py @@ -23,14 +23,14 @@ from patrole_tempest_plugin.tests.api.identity import rbac_base class IdentityDomainsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @rbac_rule_validation.action(service="keystone", - rule="identity:create_domain") + rules=["identity:create_domain"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd110') def test_create_domain(self): with self.rbac_utils.override_role(self): self.setup_test_domain() @rbac_rule_validation.action(service="keystone", - rule="identity:update_domain") + rules=["identity:update_domain"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd111') def test_update_domain(self): domain = self.setup_test_domain() @@ -42,7 +42,7 @@ class IdentityDomainsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): name=new_domain_name) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_domain") + rules=["identity:delete_domain"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd112') def test_delete_domain(self): domain = self.setup_test_domain() @@ -54,7 +54,7 @@ class IdentityDomainsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.domains_client.delete_domain(domain['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:get_domain") + rules=["identity:get_domain"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd113') def test_show_domain(self): domain = self.setup_test_domain() @@ -62,7 +62,7 @@ class IdentityDomainsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.domains_client.show_domain(domain['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_domains") + rules=["identity:list_domains"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd114') def test_list_domains(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_endpoints_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_endpoints_rbac.py index ad1fd9be..ec5ffa32 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_endpoints_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_endpoints_rbac.py @@ -23,7 +23,7 @@ from patrole_tempest_plugin.tests.api.identity import rbac_base class IdentityEndpointsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @rbac_rule_validation.action(service="keystone", - rule="identity:create_endpoint") + rules=["identity:create_endpoint"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd127') def test_create_endpoint(self): service = self.setup_test_service() @@ -31,7 +31,7 @@ class IdentityEndpointsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.setup_test_endpoint(service=service) @rbac_rule_validation.action(service="keystone", - rule="identity:update_endpoint") + rules=["identity:update_endpoint"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd128') def test_update_endpoint(self): endpoint = self.setup_test_endpoint() @@ -43,7 +43,7 @@ class IdentityEndpointsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): url=new_url) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_endpoint") + rules=["identity:delete_endpoint"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd129') def test_delete_endpoint(self): endpoint = self.setup_test_endpoint() @@ -52,7 +52,7 @@ class IdentityEndpointsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.endpoints_client.delete_endpoint(endpoint['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:get_endpoint") + rules=["identity:get_endpoint"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd130') def test_show_endpoint(self): endpoint = self.setup_test_endpoint() @@ -61,7 +61,7 @@ class IdentityEndpointsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.endpoints_client.show_endpoint(endpoint['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_endpoints") + rules=["identity:list_endpoints"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd131') def test_list_endpoints(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_ep_filter_groups_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_ep_filter_groups_rbac.py index 6e582895..be49d84c 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_ep_filter_groups_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_ep_filter_groups_rbac.py @@ -58,14 +58,14 @@ class EndpointFilterGroupsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): return endpoint_group['id'] @rbac_rule_validation.action(service="keystone", - rule="identity:create_endpoint_group") + rules=["identity:create_endpoint_group"]) @decorators.idempotent_id('b4765906-52ec-477b-b441-a8508ced68e3') def test_create_endpoint_group(self): with self.rbac_utils.override_role(self): self._create_endpoint_group(ignore_not_found=True) @rbac_rule_validation.action(service="keystone", - rule="identity:list_endpoint_groups") + rules=["identity:list_endpoint_groups"]) @decorators.idempotent_id('089aa3a7-ba1f-4f70-a1cf-f298a845058a') def test_list_endpoint_groups(self): with self.rbac_utils.override_role(self): @@ -73,14 +73,14 @@ class EndpointFilterGroupsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('5c16368d-1485-4c28-9803-db3fa3510623') @rbac_rule_validation.action(service="keystone", - rule="identity:get_endpoint_group") + rules=["identity:get_endpoint_group"]) def test_check_endpoint_group(self): with self.rbac_utils.override_role(self): self.endpoint_groups_client.check_endpoint_group( self.endpoint_group_id) @rbac_rule_validation.action(service="keystone", - rule="identity:get_endpoint_group") + rules=["identity:get_endpoint_group"]) @decorators.idempotent_id('bd2b6fb8-661f-4255-84b2-50fea4a1dc61') def test_show_endpoint_group(self): with self.rbac_utils.override_role(self): @@ -88,7 +88,7 @@ class EndpointFilterGroupsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.endpoint_group_id) @rbac_rule_validation.action(service="keystone", - rule="identity:update_endpoint_group") + rules=["identity:update_endpoint_group"]) @decorators.idempotent_id('028b9198-ec35-4bd5-8f72-e23dfb7a0c8e') def test_update_endpoint_group(self): updated_name = data_utils.rand_name( @@ -99,7 +99,7 @@ class EndpointFilterGroupsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.endpoint_group_id, name=updated_name) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_endpoint_group") + rules=["identity:delete_endpoint_group"]) @decorators.idempotent_id('88cc105e-70d9-48ac-927e-200ef41e070c') def test_delete_endpoint_group(self): endpoint_group_id = self._create_endpoint_group(ignore_not_found=True) diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_ep_filter_projects_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_ep_filter_projects_rbac.py index 1045b9b7..17e918db 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_ep_filter_projects_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_ep_filter_projects_rbac.py @@ -44,7 +44,7 @@ class EndpointFilterProjectsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @rbac_rule_validation.action( service="keystone", - rule="identity:add_endpoint_to_project") + rules=["identity:add_endpoint_to_project"]) @decorators.idempotent_id('9199ec13-816d-4efe-b8b1-e1cd026b9747') def test_add_endpoint_to_project(self): # Adding endpoints to projects @@ -53,7 +53,7 @@ class EndpointFilterProjectsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @rbac_rule_validation.action( service="keystone", - rule="identity:list_projects_for_endpoint") + rules=["identity:list_projects_for_endpoint"]) @decorators.idempotent_id('f53dca42-ec8a-48e9-924b-0bbe6c99727f') def test_list_projects_for_endpoint(self): with self.rbac_utils.override_role(self): @@ -62,7 +62,7 @@ class EndpointFilterProjectsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @rbac_rule_validation.action( service="keystone", - rule="identity:check_endpoint_in_project") + rules=["identity:check_endpoint_in_project"]) @decorators.idempotent_id('0c1425eb-833c-4aa1-a21d-52ffa41fdc6a') def test_check_endpoint_in_project(self): self._add_endpoint_to_project() @@ -72,7 +72,7 @@ class EndpointFilterProjectsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @rbac_rule_validation.action( service="keystone", - rule="identity:list_endpoints_for_project") + rules=["identity:list_endpoints_for_project"]) @decorators.idempotent_id('5d86c659-c6ad-41e0-854e-3823e95c7cc2') def test_list_endpoints_in_project(self): with self.rbac_utils.override_role(self): @@ -81,7 +81,7 @@ class EndpointFilterProjectsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @rbac_rule_validation.action( service="keystone", - rule="identity:remove_endpoint_from_project") + rules=["identity:remove_endpoint_from_project"]) @decorators.idempotent_id('b4e21c10-4f47-427b-9b8a-f5b5601adfda') def test_remove_endpoint_from_project(self): self._add_endpoint_to_project(ignore_not_found=True) diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_groups_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_groups_rbac.py index 06148d95..9814e3b6 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_groups_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_groups_rbac.py @@ -30,14 +30,14 @@ class IdentityGroupsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): return (group['id'], user['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:create_group") + rules=["identity:create_group"]) @decorators.idempotent_id('88377f51-9074-4d64-a22f-f8931d048c9a') def test_create_group(self): with self.rbac_utils.override_role(self): self.setup_test_group() @rbac_rule_validation.action(service="keystone", - rule="identity:update_group") + rules=["identity:update_group"]) @decorators.idempotent_id('790fb7be-a657-4a64-9b83-c43425cf180b') def test_update_group(self): group = self.setup_test_group() @@ -48,7 +48,7 @@ class IdentityGroupsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.groups_client.update_group(group['id'], name=new_group_name) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_group") + rules=["identity:delete_group"]) @decorators.idempotent_id('646b52da-2a5f-486a-afb0-51fdc86a6c12') def test_delete_group(self): group = self.setup_test_group() @@ -57,7 +57,7 @@ class IdentityGroupsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.groups_client.delete_group(group['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:get_group") + rules=["identity:get_group"]) @decorators.idempotent_id('d530f0ad-42b9-429b-ad05-e53ac95a040e') def test_show_group(self): group = self.setup_test_group() @@ -66,14 +66,14 @@ class IdentityGroupsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.groups_client.show_group(group['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_groups") + rules=["identity:list_groups"]) @decorators.idempotent_id('c4d0f76b-735f-4fd0-868b-0006bc420ff4') def test_list_groups(self): with self.rbac_utils.override_role(self): self.groups_client.list_groups() @rbac_rule_validation.action(service="keystone", - rule="identity:add_user_to_group") + rules=["identity:add_user_to_group"]) @decorators.idempotent_id('fdd49b74-3ed3-4736-9f0e-9027a32017ac') def test_add_user_group(self): group = self.setup_test_group() @@ -83,7 +83,7 @@ class IdentityGroupsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.groups_client.add_group_user(group['id'], user['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:remove_user_from_group") + rules=["identity:remove_user_from_group"]) @decorators.idempotent_id('8a60d11c-7d2b-47e5-a0f3-9ea900ca66fe') def test_remove_user_group(self): group_id, user_id = self._create_user_and_add_to_new_group() @@ -92,7 +92,7 @@ class IdentityGroupsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.groups_client.delete_group_user(group_id, user_id) @rbac_rule_validation.action(service="keystone", - rule="identity:list_users_in_group") + rules=["identity:list_users_in_group"]) @decorators.idempotent_id('b3e394a7-079e-4a0d-a4ff-9b266293d1ee') def test_list_user_group(self): group = self.setup_test_group() @@ -101,7 +101,7 @@ class IdentityGroupsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.groups_client.list_group_users(group['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:check_user_in_group") + rules=["identity:check_user_in_group"]) @decorators.idempotent_id('d3603241-fd87-4a2d-94f9-f32469d1aaba') def test_check_user_group(self): group_id, user_id = self._create_user_and_add_to_new_group() diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_oauth_consumers_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_oauth_consumers_rbac.py index f591e150..ecd534dc 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_oauth_consumers_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_oauth_consumers_rbac.py @@ -34,14 +34,14 @@ class IdentityConsumersV3RbacTest(rbac_base.BaseIdentityV3RbacTest): return consumer @rbac_rule_validation.action(service="keystone", - rule="identity:create_consumer") + rules=["identity:create_consumer"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d970') def test_create_consumer(self): with self.rbac_utils.override_role(self): self._create_consumer() @rbac_rule_validation.action(service="keystone", - rule="identity:delete_consumer") + rules=["identity:delete_consumer"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d971') def test_delete_consumer(self): consumer = self._create_consumer() @@ -50,7 +50,7 @@ class IdentityConsumersV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.consumers_client.delete_consumer(consumer['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:update_consumer") + rules=["identity:update_consumer"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d972') def test_update_consumer(self): consumer = self._create_consumer() @@ -62,7 +62,7 @@ class IdentityConsumersV3RbacTest(rbac_base.BaseIdentityV3RbacTest): updated_description) @rbac_rule_validation.action(service="keystone", - rule="identity:get_consumer") + rules=["identity:get_consumer"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d973') def test_show_consumer(self): consumer = self._create_consumer() @@ -71,7 +71,7 @@ class IdentityConsumersV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.consumers_client.show_consumer(consumer['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_consumers") + rules=["identity:list_consumers"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d975') def test_list_consumers(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_oauth_tokens_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_oauth_tokens_rbac.py index 13731d56..30b386ff 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_oauth_tokens_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_oauth_tokens_rbac.py @@ -80,7 +80,7 @@ class IdentityOAuthTokensV3RbacTest(rbac_base.BaseIdentityV3RbacTest): return access_key @rbac_rule_validation.action(service="keystone", - rule="identity:authorize_request_token") + rules=["identity:authorize_request_token"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d976') def test_authorize_request_token(self): _, request_token = self._create_consumer_and_request_token() @@ -91,7 +91,7 @@ class IdentityOAuthTokensV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.role_ids) @rbac_rule_validation.action(service="keystone", - rule="identity:get_access_token") + rules=["identity:get_access_token"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d977') def test_get_access_token(self): access_token = self._create_access_token() @@ -101,7 +101,7 @@ class IdentityOAuthTokensV3RbacTest(rbac_base.BaseIdentityV3RbacTest): access_token) @rbac_rule_validation.action(service="keystone", - rule="identity:get_access_token_role") + rules=["identity:get_access_token_role"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d980') def test_get_access_token_role(self): access_token = self._create_access_token() @@ -111,14 +111,14 @@ class IdentityOAuthTokensV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.user_id, access_token, self.role_ids[0]) @rbac_rule_validation.action(service="keystone", - rule="identity:list_access_tokens") + rules=["identity:list_access_tokens"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d979') def test_list_access_tokens(self): with self.rbac_utils.override_role(self): self.oauth_token_client.list_access_tokens(self.user_id) @rbac_rule_validation.action(service="keystone", - rule="identity:list_access_token_roles") + rules=["identity:list_access_token_roles"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d978') def test_list_access_token_roles(self): access_token = self._create_access_token() @@ -128,7 +128,7 @@ class IdentityOAuthTokensV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.user_id, access_token) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_access_token") + rules=["identity:delete_access_token"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d981') def test_revoke_access_token(self): access_token = self._create_access_token() diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_policies_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_policies_rbac.py index a8c10ca3..b0a30874 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_policies_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_policies_rbac.py @@ -23,14 +23,14 @@ from patrole_tempest_plugin.tests.api.identity import rbac_base class IdentityPoliciesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @rbac_rule_validation.action(service="keystone", - rule="identity:create_policy") + rules=["identity:create_policy"]) @decorators.idempotent_id('de2f7ecb-fbf0-41f3-abf4-b97b5e082fd5') def test_create_policy(self): with self.rbac_utils.override_role(self): self.setup_test_policy() @rbac_rule_validation.action(service="keystone", - rule="identity:update_policy") + rules=["identity:update_policy"]) @decorators.idempotent_id('9cfed3c6-0b27-4d15-be67-e06e0cfb01b9') def test_update_policy(self): policy = self.setup_test_policy() @@ -42,7 +42,7 @@ class IdentityPoliciesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): type=updated_policy_type) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_policy") + rules=["identity:delete_policy"]) @decorators.idempotent_id('dcd93f75-1e1b-4fbe-bee0-9c4c7b201735') def test_delete_policy(self): policy = self.setup_test_policy() @@ -51,7 +51,7 @@ class IdentityPoliciesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.policies_client.delete_policy(policy['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:get_policy") + rules=["identity:get_policy"]) @decorators.idempotent_id('d7e415c2-945a-4504-9571-0e2d0dd8594b') def test_show_policy(self): policy = self.setup_test_policy() @@ -60,7 +60,7 @@ class IdentityPoliciesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.policies_client.show_policy(policy['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_policies") + rules=["identity:list_policies"]) @decorators.idempotent_id('35a56161-4054-4237-8a78-7ce805dce202') def test_list_policies(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_policy_association_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_policy_association_rbac.py index 2a692242..f56b6e46 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_policy_association_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_policy_association_rbac.py @@ -58,7 +58,7 @@ class IdentityPolicyAssociationRbacTest( @rbac_rule_validation.action( service="keystone", - rule="identity:create_policy_association_for_endpoint") + rules=["identity:create_policy_association_for_endpoint"]) @decorators.idempotent_id('1b3f4f62-4f4a-4d27-be27-9a113058597f') def test_update_policy_association_for_endpoint(self): with self.rbac_utils.override_role(self): @@ -67,7 +67,7 @@ class IdentityPolicyAssociationRbacTest( @rbac_rule_validation.action( service="keystone", - rule="identity:check_policy_association_for_endpoint") + rules=["identity:check_policy_association_for_endpoint"]) @decorators.idempotent_id('25ce8c89-e751-465c-8d35-52bacd774beb') def test_show_policy_association_for_endpoint(self): self._update_policy_association_for_endpoint( @@ -78,7 +78,7 @@ class IdentityPolicyAssociationRbacTest( @rbac_rule_validation.action( service="keystone", - rule="identity:delete_policy_association_for_endpoint") + rules=["identity:delete_policy_association_for_endpoint"]) @decorators.idempotent_id('95cad2d8-bcd0-4c4e-a8f7-cc80601e43a1') def test_delete_policy_association_for_endpoint(self): self._update_policy_association_for_endpoint( @@ -89,7 +89,7 @@ class IdentityPolicyAssociationRbacTest( @rbac_rule_validation.action( service="keystone", - rule="identity:create_policy_association_for_service") + rules=["identity:create_policy_association_for_service"]) @decorators.idempotent_id('57fb80fe-6ce2-4995-b710-4692b3fc3cdc') def test_update_policy_association_for_service(self): with self.rbac_utils.override_role(self): @@ -98,7 +98,7 @@ class IdentityPolicyAssociationRbacTest( @rbac_rule_validation.action( service="keystone", - rule="identity:check_policy_association_for_service") + rules=["identity:check_policy_association_for_service"]) @decorators.idempotent_id('5cbe285f-4888-4f98-978f-30210ff28b74') def test_show_policy_association_for_service(self): self._update_policy_association_for_service( @@ -109,7 +109,7 @@ class IdentityPolicyAssociationRbacTest( @rbac_rule_validation.action( service="keystone", - rule="identity:delete_policy_association_for_service") + rules=["identity:delete_policy_association_for_service"]) @decorators.idempotent_id('f754455c-02a4-4fb6-8c73-64ef453f955f') def test_delete_policy_association_for_service(self): self._update_policy_association_for_service( @@ -120,7 +120,7 @@ class IdentityPolicyAssociationRbacTest( @rbac_rule_validation.action( service="keystone", - rule="identity:create_policy_association_for_region_and_service") + rules=["identity:create_policy_association_for_region_and_service"]) @decorators.idempotent_id('54d2a93e-c84d-4079-8ea9-2fb227c262a1') def test_update_policy_association_for_region_and_service(self): with self.rbac_utils.override_role(self): @@ -129,7 +129,7 @@ class IdentityPolicyAssociationRbacTest( @rbac_rule_validation.action( service="keystone", - rule="identity:check_policy_association_for_region_and_service") + rules=["identity:check_policy_association_for_region_and_service"]) @decorators.idempotent_id('0763b780-52c1-47bc-9316-1fe12a2ab0bc') def test_show_policy_association_for_region_and_service(self): self._update_policy_association_for_region_and_service( @@ -141,7 +141,7 @@ class IdentityPolicyAssociationRbacTest( @rbac_rule_validation.action( service="keystone", - rule="identity:delete_policy_association_for_region_and_service") + rules=["identity:delete_policy_association_for_region_and_service"]) @decorators.idempotent_id('9c956888-81d4-4a24-8203-bff7b8a7834c') def test_delete_policy_association_for_region_and_service(self): self._update_policy_association_for_region_and_service( diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_project_tags_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_project_tags_rbac.py index e0be9cb2..debc2e92 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_project_tags_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_project_tags_rbac.py @@ -42,7 +42,7 @@ class ProjectTagsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('acbd7b2d-0a4d-4990-9fab-eccad69d4238') @rbac_rule_validation.action(service="keystone", - rule="identity:create_project_tag") + rules=["identity:create_project_tag"]) def test_update_project_tag(self): tag = data_utils.rand_name(self.__class__.__name__ + '-Tag') with self.rbac_utils.override_role(self): @@ -50,14 +50,14 @@ class ProjectTagsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('e122d7d1-bb6d-43af-b489-afa8c609b9ae') @rbac_rule_validation.action(service="keystone", - rule="identity:list_project_tags") + rules=["identity:list_project_tags"]) def test_list_project_tags(self): with self.rbac_utils.override_role(self): self.project_tags_client.list_project_tags(self.project_id) @decorators.idempotent_id('716f9081-4626-4594-a82c-e7dc037464ac') @rbac_rule_validation.action(service="keystone", - rule="identity:update_project_tags") + rules=["identity:update_project_tags"]) def test_update_all_project_tags(self): tags = [ data_utils.rand_name(self.__class__.__name__ + '-Tag') @@ -69,7 +69,7 @@ class ProjectTagsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('974cb1da-d7d4-4863-99da-4a3f0c801729') @rbac_rule_validation.action(service="keystone", - rule="identity:get_project_tag") + rules=["identity:get_project_tag"]) def test_check_project_tag_existence(self): tag = data_utils.rand_name(self.__class__.__name__ + '-Tag') self.project_tags_client.update_project_tag(self.project_id, tag) @@ -80,7 +80,7 @@ class ProjectTagsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('ffe0c8e1-f9eb-43c5-8097-1e938fc08e07') @rbac_rule_validation.action(service="keystone", - rule="identity:delete_project_tag") + rules=["identity:delete_project_tag"]) def test_delete_project_tag(self): tag = data_utils.rand_name(self.__class__.__name__ + '-Tag') self.project_tags_client.update_project_tag(self.project_id, tag) @@ -90,7 +90,7 @@ class ProjectTagsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('94d0ef63-e9e3-4287-9c5e-bd5464467d77') @rbac_rule_validation.action(service="keystone", - rule="identity:delete_project_tags") + rules=["identity:delete_project_tags"]) def test_delete_all_project_tags(self): with self.rbac_utils.override_role(self): self.project_tags_client.delete_all_project_tags(self.project_id) diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_projects_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_projects_rbac.py index 0b394b46..e1e6f082 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_projects_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_projects_rbac.py @@ -23,14 +23,14 @@ from patrole_tempest_plugin.tests.api.identity import rbac_base class IdentityProjectV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @rbac_rule_validation.action(service="keystone", - rule="identity:create_project") + rules=["identity:create_project"]) @decorators.idempotent_id('0f148510-63bf-11e6-1564-080044d0d904') def test_create_project(self): with self.rbac_utils.override_role(self): self.setup_test_project() @rbac_rule_validation.action(service="keystone", - rule="identity:update_project") + rules=["identity:update_project"]) @decorators.idempotent_id('0f148510-63bf-11e6-1564-080044d0d905') def test_update_project(self): project = self.setup_test_project() @@ -42,7 +42,7 @@ class IdentityProjectV3RbacTest(rbac_base.BaseIdentityV3RbacTest): description=new_desc) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_project") + rules=["identity:delete_project"]) @decorators.idempotent_id('0f148510-63bf-11e6-1564-080044d0d906') def test_delete_project(self): project = self.setup_test_project() @@ -51,7 +51,7 @@ class IdentityProjectV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.projects_client.delete_project(project['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:get_project") + rules=["identity:get_project"]) @decorators.idempotent_id('0f148510-63bf-11e6-1564-080044d0d907') def test_show_project(self): project = self.setup_test_project() @@ -60,7 +60,7 @@ class IdentityProjectV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.projects_client.show_project(project['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_projects") + rules=["identity:list_projects"]) @decorators.idempotent_id('0f148510-63bf-11e6-1564-080044d0d908') def test_list_projects(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_regions_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_regions_rbac.py index 14b9de52..1d81319c 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_regions_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_regions_rbac.py @@ -23,14 +23,14 @@ from patrole_tempest_plugin.tests.api.identity import rbac_base class IdentityRegionsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @rbac_rule_validation.action(service="keystone", - rule="identity:create_region") + rules=["identity:create_region"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd119') def test_create_region(self): with self.rbac_utils.override_role(self): self.setup_test_region() @rbac_rule_validation.action(service="keystone", - rule="identity:update_region") + rules=["identity:update_region"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd120') def test_update_region(self): region = self.setup_test_region() @@ -42,7 +42,7 @@ class IdentityRegionsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): description=new_description) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_region") + rules=["identity:delete_region"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd121') def test_delete_region(self): region = self.setup_test_region() @@ -51,7 +51,7 @@ class IdentityRegionsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.regions_client.delete_region(region['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:get_region") + rules=["identity:get_region"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd122') def test_show_region(self): region = self.setup_test_region() @@ -60,7 +60,7 @@ class IdentityRegionsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.regions_client.show_region(region['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_regions") + rules=["identity:list_regions"]) @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd123') def test_list_regions(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_role_assignments_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_role_assignments_rbac.py index 90cf2557..3eabac81 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_role_assignments_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_role_assignments_rbac.py @@ -23,7 +23,7 @@ class IdentityRoleAssignmentsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('afe57adb-1b9c-43d9-84a9-f0cf4c94e416') @rbac_rule_validation.action(service="keystone", - rule="identity:list_role_assignments") + rules=["identity:list_role_assignments"]) def test_list_role_assignments(self): with self.rbac_utils.override_role(self): self.role_assignments_client.list_role_assignments() @@ -31,7 +31,7 @@ class IdentityRoleAssignmentsV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('36c7a990-857e-415c-8717-38d7200a9894') @rbac_rule_validation.action( service="keystone", - rule="identity:list_role_assignments_for_tree") + rules=["identity:list_role_assignments_for_tree"]) def test_list_role_assignments_for_tree(self): project = self.setup_test_project() diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_roles_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_roles_rbac.py index 099c7024..82421947 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_roles_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_roles_rbac.py @@ -34,14 +34,14 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): cls.user = cls.setup_test_user() @rbac_rule_validation.action(service="keystone", - rule="identity:create_role") + rules=["identity:create_role"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d904') def test_create_role(self): with self.rbac_utils.override_role(self): self.setup_test_role() @rbac_rule_validation.action(service="keystone", - rule="identity:update_role") + rules=["identity:update_role"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d905') def test_update_role(self): new_role_name = data_utils.rand_name( @@ -52,7 +52,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): name=new_role_name) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_role") + rules=["identity:delete_role"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d906') def test_delete_role(self): role = self.setup_test_role() @@ -61,21 +61,21 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.roles_client.delete_role(role['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:get_role") + rules=["identity:get_role"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d907') def test_show_role(self): with self.rbac_utils.override_role(self): self.roles_client.show_role(self.role['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_roles") + rules=["identity:list_roles"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d908') def test_list_roles(self): with self.rbac_utils.override_role(self): self.roles_client.list_roles() @rbac_rule_validation.action(service="keystone", - rule="identity:create_grant") + rules=["identity:create_grant"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d909') def test_create_user_role_on_project(self): with self.rbac_utils.override_role(self): @@ -90,7 +90,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.role['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:create_grant") + rules=["identity:create_grant"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d90c') def test_create_group_role_on_project(self): with self.rbac_utils.override_role(self): @@ -105,7 +105,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.role['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:create_grant") + rules=["identity:create_grant"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d90f') def test_create_user_role_on_domain(self): with self.rbac_utils.override_role(self): @@ -120,7 +120,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.role['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:create_grant") + rules=["identity:create_grant"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d912') def test_create_group_role_on_domain(self): with self.rbac_utils.override_role(self): @@ -135,7 +135,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.role['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:check_grant") + rules=["identity:check_grant"]) @decorators.idempotent_id('22921b1e-1a33-4026-bff9-f236d6dd149c') def test_check_user_role_existence_on_project(self): self.roles_client.create_user_role_on_project( @@ -156,7 +156,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('92f8e67d-85bf-407d-9814-edd5664abc47') @rbac_rule_validation.action(service="keystone", - rule="identity:check_grant") + rules=["identity:check_grant"]) def test_check_user_role_existence_on_domain(self): self.roles_client.create_user_role_on_domain( self.domain['id'], @@ -176,7 +176,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('8738d3d2-8c84-4423-b36c-7c59eaa08b73') @rbac_rule_validation.action(service="keystone", - rule="identity:check_grant") + rules=["identity:check_grant"]) def test_check_role_from_group_on_project_existence(self): self.roles_client.create_group_role_on_project( self.project['id'], @@ -196,7 +196,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('e7d73bd0-cf5e-4c0c-9c93-cf53e23232d6') @rbac_rule_validation.action(service="keystone", - rule="identity:check_grant") + rules=["identity:check_grant"]) def test_check_role_from_group_on_domain_existence(self): self.roles_client.create_group_role_on_domain( self.domain['id'], @@ -215,7 +215,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.role['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:revoke_grant") + rules=["identity:revoke_grant"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d90a') def test_delete_role_from_user_on_project(self): self.roles_client.create_user_role_on_project( @@ -235,7 +235,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.role['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:revoke_grant") + rules=["identity:revoke_grant"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d90d') def test_delete_role_from_group_on_project(self): self.roles_client.create_group_role_on_project( @@ -255,7 +255,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.role['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:revoke_grant") + rules=["identity:revoke_grant"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d910') def test_delete_role_from_user_on_domain(self): self.roles_client.create_user_role_on_domain( @@ -275,7 +275,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.role['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:revoke_grant") + rules=["identity:revoke_grant"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d913') def test_delete_role_from_group_on_domain(self): self.roles_client.create_group_role_on_domain( @@ -295,7 +295,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.role['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_grants") + rules=["identity:list_grants"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d90b') def test_list_user_roles_on_project(self): with self.rbac_utils.override_role(self): @@ -304,7 +304,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.user['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_grants") + rules=["identity:list_grants"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d90e') def test_list_group_roles_on_project(self): with self.rbac_utils.override_role(self): @@ -313,7 +313,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.group['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_grants") + rules=["identity:list_grants"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d911') def test_list_user_roles_on_domain(self): with self.rbac_utils.override_role(self): @@ -322,7 +322,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.user['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_grants") + rules=["identity:list_grants"]) @decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d914') def test_list_group_roles_on_domain(self): with self.rbac_utils.override_role(self): @@ -332,7 +332,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('2aef3eaa-8156-4962-a01d-c9bb0e499e15') @rbac_rule_validation.action(service="keystone", - rule="identity:create_implied_role") + rules=["identity:create_implied_role"]) def test_create_role_inference_rule(self): with self.rbac_utils.override_role(self): self.roles_client.create_role_inference_rule( @@ -342,7 +342,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('83f997b2-55c4-4894-b1f2-e175b19d1fa5') @rbac_rule_validation.action(service="keystone", - rule="identity:get_implied_role") + rules=["identity:get_implied_role"]) def test_show_role_inference_rule(self): self.roles_client.create_role_inference_rule( self.role['id'], self.implies_role['id']) @@ -355,14 +355,14 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('f7bb39bf-0b06-468e-a8b0-60a4fb1f258d') @rbac_rule_validation.action(service="keystone", - rule="identity:list_implied_roles") + rules=["identity:list_implied_roles"]) def test_list_role_inferences_rules(self): with self.rbac_utils.override_role(self): self.roles_client.list_role_inferences_rules(self.role['id']) @decorators.idempotent_id('eca2d502-09bb-45cd-9773-bce2e7bcddd1') @rbac_rule_validation.action(service="keystone", - rule="identity:check_implied_role") + rules=["identity:check_implied_role"]) def test_check_role_inference_rule(self): self.roles_client.create_role_inference_rule( self.role['id'], self.implies_role['id']) @@ -375,7 +375,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('13a5db1e-dd4a-4ca1-81ec-d5452aaaf54b') @rbac_rule_validation.action(service="keystone", - rule="identity:delete_implied_role") + rules=["identity:delete_implied_role"]) def test_delete_role_inference_rule(self): self.roles_client.create_role_inference_rule( self.role['id'], self.implies_role['id']) @@ -389,7 +389,7 @@ class IdentityRolesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('05869f2b-4dd4-425a-905e-eec9a6f06374') @rbac_rule_validation.action(service="keystone", - rule="identity:list_role_inference_rules") + rules=["identity:list_role_inference_rules"]) def test_list_all_role_inference_rules(self): with self.rbac_utils.override_role(self): self.roles_client.list_all_role_inference_rules() diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_services_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_services_rbac.py index 6ab17ff8..41ba5ba6 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_services_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_services_rbac.py @@ -23,14 +23,14 @@ from patrole_tempest_plugin.tests.api.identity import rbac_base class IdentitySericesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @rbac_rule_validation.action(service="keystone", - rule="identity:create_service") + rules=["identity:create_service"]) @decorators.idempotent_id('9a4bb317-f0bb-4005-8df0-4b672885b7c8') def test_create_service(self): with self.rbac_utils.override_role(self): self.setup_test_service() @rbac_rule_validation.action(service="keystone", - rule="identity:update_service") + rules=["identity:update_service"]) @decorators.idempotent_id('b39447d1-2cf6-40e5-a899-46f287f2ecf0') def test_update_service(self): service = self.setup_test_service() @@ -43,7 +43,7 @@ class IdentitySericesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): type=service['type']) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_service") + rules=["identity:delete_service"]) @decorators.idempotent_id('177b991a-438d-4bef-8e9f-9c6cc5a1c9e8') def test_delete_service(self): service = self.setup_test_service() @@ -52,7 +52,7 @@ class IdentitySericesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.services_client.delete_service(service['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:get_service") + rules=["identity:get_service"]) @decorators.idempotent_id('d89a9ac6-cd53-428d-84c0-5bc71f4a432d') def test_show_service(self): service = self.setup_test_service() @@ -61,7 +61,7 @@ class IdentitySericesV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.services_client.show_service(service['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_services") + rules=["identity:list_services"]) @decorators.idempotent_id('706e6bea-3385-4718-919c-0b5121395806') def test_list_services(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_tokens_negative_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_tokens_negative_rbac.py index da5d4cdf..c1c29345 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_tokens_negative_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_tokens_negative_rbac.py @@ -43,7 +43,7 @@ class IdentityTokenV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.attr(type=['negative']) @rbac_rule_validation.action( service="keystone", - rule="identity:validate_token", + rules=["identity:validate_token"], extra_target_data={ "target.token.user_id": "os_alt.auth_provider.credentials.user_id" @@ -62,7 +62,7 @@ class IdentityTokenV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.attr(type=['negative']) @rbac_rule_validation.action( service="keystone", - rule="identity:revoke_token", + rules=["identity:revoke_token"], extra_target_data={ "target.token.user_id": "os_alt.auth_provider.credentials.user_id" @@ -81,7 +81,7 @@ class IdentityTokenV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.attr(type=['negative']) @rbac_rule_validation.action( service="keystone", - rule="identity:check_token", + rules=["identity:check_token"], extra_target_data={ "target.token.user_id": "os_alt.auth_provider.credentials.user_id" diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_tokens_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_tokens_rbac.py index 23ee768b..a648774c 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_tokens_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_tokens_rbac.py @@ -30,7 +30,7 @@ class IdentityTokenV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('201e2fe5-2023-4bce-9189-78b51520a91e') @rbac_rule_validation.action( service="keystone", - rule="identity:validate_token", + rules=["identity:validate_token"], extra_target_data={ "target.token.user_id": "os_primary.auth_provider.credentials.user_id" @@ -43,7 +43,7 @@ class IdentityTokenV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('42a299db-fe0a-4ea0-9824-0bfd13155886') @rbac_rule_validation.action( service="keystone", - rule="identity:revoke_token", + rules=["identity:revoke_token"], extra_target_data={ "target.token.user_id": "os_primary.auth_provider.credentials.user_id" @@ -56,7 +56,7 @@ class IdentityTokenV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('3554d218-8cd6-4730-a1b2-0e22f9b78f45') @rbac_rule_validation.action( service="keystone", - rule="identity:check_token", + rules=["identity:check_token"], extra_target_data={ "target.token.user_id": "os_primary.auth_provider.credentials.user_id" diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_trusts_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_trusts_rbac.py index 91dbb538..985b9929 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_trusts_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_trusts_rbac.py @@ -65,7 +65,7 @@ class IdentityTrustV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('7ab595a7-9b71-45fe-91d8-2793b0292f72') @rbac_rule_validation.action( service="keystone", - rule="identity:create_trust", + rules=["identity:create_trust"], extra_target_data={ "trust.trustor_user_id": "os_primary.credentials.user_id" }) @@ -78,7 +78,7 @@ class IdentityTrustV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.attr(type=['negative']) @rbac_rule_validation.action( service="keystone", - rule="identity:create_trust", + rules=["identity:create_trust"], extra_target_data={ "trust.trustor_user_id": "os_alt.credentials.user_id" }) @@ -94,7 +94,7 @@ class IdentityTrustV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('d9a6fd06-08f6-462c-a86c-ce009adf1230') @rbac_rule_validation.action( service="keystone", - rule="identity:delete_trust") + rules=["identity:delete_trust"]) def test_delete_trust(self): trust = self.setup_test_trust(trustor_user_id=self.trustor_user_id, trustee_user_id=self.trustee_user_id) @@ -105,7 +105,7 @@ class IdentityTrustV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('f2e32896-bf66-4f4e-89cf-e7fba0ef1f38') @rbac_rule_validation.action( service="keystone", - rule="identity:list_trusts") + rules=["identity:list_trusts"]) def test_list_trusts(self): with self.rbac_utils.override_role(self): self.trusts_client.list_trusts( @@ -114,7 +114,7 @@ class IdentityTrustV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('3c9ff92f-a73e-4f9b-8865-e017f38c70f5') @rbac_rule_validation.action( service="keystone", - rule="identity:list_roles_for_trust") + rules=["identity:list_roles_for_trust"]) def test_list_roles_for_trust(self): with self.rbac_utils.override_role(self): self.trusts_client.list_trust_roles(self.trust['id']) @@ -122,7 +122,7 @@ class IdentityTrustV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('3bb4f97b-cecd-4c7d-ad10-b88ee6c5d573') @rbac_rule_validation.action( service="keystone", - rule="identity:get_role_for_trust") + rules=["identity:get_role_for_trust"]) def test_show_trust_role(self): with self.rbac_utils.override_role(self): self.trusts_client.show_trust_role( @@ -131,7 +131,7 @@ class IdentityTrustV3RbacTest(rbac_base.BaseIdentityV3RbacTest): @decorators.idempotent_id('0184e0fb-641e-4b52-ab73-81c1ce6ca5c1') @rbac_rule_validation.action( service="keystone", - rule="identity:get_trust") + rules=["identity:get_trust"]) def test_show_trust(self): with self.rbac_utils.override_role(self): self.trusts_client.show_trust(self.trust['id']) diff --git a/patrole_tempest_plugin/tests/api/identity/v3/test_users_rbac.py b/patrole_tempest_plugin/tests/api/identity/v3/test_users_rbac.py index bd975359..c633bb81 100644 --- a/patrole_tempest_plugin/tests/api/identity/v3/test_users_rbac.py +++ b/patrole_tempest_plugin/tests/api/identity/v3/test_users_rbac.py @@ -28,14 +28,14 @@ class IdentityUserV3RbacTest(rbac_base.BaseIdentityV3RbacTest): cls.default_user_id = cls.os_primary.credentials.user_id @rbac_rule_validation.action(service="keystone", - rule="identity:create_user") + rules=["identity:create_user"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d904') def test_create_user(self): with self.rbac_utils.override_role(self): self.setup_test_user() @rbac_rule_validation.action(service="keystone", - rule="identity:update_user") + rules=["identity:update_user"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d905') def test_update_user(self): user = self.setup_test_user() @@ -48,7 +48,7 @@ class IdentityUserV3RbacTest(rbac_base.BaseIdentityV3RbacTest): email=new_email) @rbac_rule_validation.action(service="keystone", - rule="identity:delete_user") + rules=["identity:delete_user"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d906') def test_delete_user(self): user = self.setup_test_user() @@ -57,28 +57,28 @@ class IdentityUserV3RbacTest(rbac_base.BaseIdentityV3RbacTest): self.users_client.delete_user(user['id']) @rbac_rule_validation.action(service="keystone", - rule="identity:list_users") + rules=["identity:list_users"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d907') def test_list_users(self): with self.rbac_utils.override_role(self): self.users_client.list_users() @rbac_rule_validation.action(service="keystone", - rule="identity:get_user") + rules=["identity:get_user"]) @decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d908') def test_show_own_user(self): with self.rbac_utils.override_role(self): self.users_client.show_user(self.default_user_id) @rbac_rule_validation.action(service="keystone", - rule="identity:list_groups_for_user") + rules=["identity:list_groups_for_user"]) @decorators.idempotent_id('bd5946d4-46d2-423d-a800-a3e7aabc18b3') def test_list_own_user_group(self): with self.rbac_utils.override_role(self): self.users_client.list_user_groups(self.default_user_id) @rbac_rule_validation.action(service="keystone", - rule="identity:list_user_projects") + rules=["identity:list_user_projects"]) @decorators.idempotent_id('0f148510-63bf-11e6-1564-080044d0d909') def test_list_own_user_projects(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/image/test_image_namespace_objects_rbac.py b/patrole_tempest_plugin/tests/api/image/test_image_namespace_objects_rbac.py index 3ad5c74a..24e5806d 100644 --- a/patrole_tempest_plugin/tests/api/image/test_image_namespace_objects_rbac.py +++ b/patrole_tempest_plugin/tests/api/image/test_image_namespace_objects_rbac.py @@ -24,7 +24,7 @@ from patrole_tempest_plugin.tests.api.image import rbac_base class ImageNamespacesObjectsRbacTest(rbac_base.BaseV2ImageRbacTest): @rbac_rule_validation.action(service="glance", - rule="add_metadef_object") + rules=["add_metadef_object"]) @decorators.idempotent_id("772156f2-e33d-432e-8521-12385746c2f0") def test_create_metadef_object_in_namespace(self): """Create Metadef Object Namespace Test @@ -45,7 +45,7 @@ class ImageNamespacesObjectsRbacTest(rbac_base.BaseV2ImageRbacTest): namespace['namespace'], object_name) @rbac_rule_validation.action(service="glance", - rule="get_metadef_objects") + rules=["get_metadef_objects"]) @decorators.idempotent_id("48b50ecb-237d-4909-be62-b6a05c47b64d") def test_list_metadef_objects_in_namespace(self): """List Metadef Object Namespace Test @@ -59,7 +59,7 @@ class ImageNamespacesObjectsRbacTest(rbac_base.BaseV2ImageRbacTest): namespace['namespace']) @rbac_rule_validation.action(service="glance", - rule="modify_metadef_object") + rules=["modify_metadef_object"]) @decorators.idempotent_id("cd130b1d-89fa-479c-a90e-498d895fb455") def test_update_metadef_object_in_namespace(self): """Update Metadef Object Namespace Test @@ -83,7 +83,7 @@ class ImageNamespacesObjectsRbacTest(rbac_base.BaseV2ImageRbacTest): namespace['namespace'], object_name, name=new_name) @rbac_rule_validation.action(service="glance", - rule="get_metadef_object") + rules=["get_metadef_object"]) @decorators.idempotent_id("93c61420-5b80-4a0e-b6f3-4ccc6e90b865") def test_show_metadef_object_in_namespace(self): """Show Metadef Object Namespace Test diff --git a/patrole_tempest_plugin/tests/api/image/test_image_namespace_property_rbac.py b/patrole_tempest_plugin/tests/api/image/test_image_namespace_property_rbac.py index 75cf66d9..10594506 100644 --- a/patrole_tempest_plugin/tests/api/image/test_image_namespace_property_rbac.py +++ b/patrole_tempest_plugin/tests/api/image/test_image_namespace_property_rbac.py @@ -29,7 +29,7 @@ class NamespacesPropertyRbacTest(rbac_base.BaseV2ImageRbacTest): cls.resource_name = body['resource_types'][0]['name'] @rbac_rule_validation.action(service="glance", - rule="add_metadef_property") + rules=["add_metadef_property"]) @decorators.idempotent_id('383555ca-677b-43e9-b809-acc2b5a0176c') def test_add_md_properties(self): """Create Image Metadef Namespace Property Test @@ -45,7 +45,7 @@ class NamespacesPropertyRbacTest(rbac_base.BaseV2ImageRbacTest): title=property_name, name=self.resource_name) @rbac_rule_validation.action(service="glance", - rule="get_metadef_properties") + rules=["get_metadef_properties"]) @decorators.idempotent_id('d5177611-c2b5-4000-bd9c-1987af9222ea') def test_get_md_properties(self): """List Image Metadef Namespace Properties Test @@ -58,7 +58,7 @@ class NamespacesPropertyRbacTest(rbac_base.BaseV2ImageRbacTest): namespace=namespace['namespace']) @rbac_rule_validation.action(service="glance", - rule="get_metadef_property") + rules=["get_metadef_property"]) @decorators.idempotent_id('cfeda2af-bcab-433e-80c7-4b40c774aed5') def test_get_md_property(self): """Get Image Metadef Namespace Property Test @@ -77,7 +77,7 @@ class NamespacesPropertyRbacTest(rbac_base.BaseV2ImageRbacTest): namespace['namespace'], self.resource_name) @rbac_rule_validation.action(service="glance", - rule="modify_metadef_property") + rules=["modify_metadef_property"]) @decorators.idempotent_id('fdaf9363-4010-4f2f-8192-1b28f6b22e69') def test_modify_md_properties(self): """Modify Image Metadef Namespace Policy Test diff --git a/patrole_tempest_plugin/tests/api/image/test_image_namespace_rbac.py b/patrole_tempest_plugin/tests/api/image/test_image_namespace_rbac.py index 204263a7..aade60fd 100644 --- a/patrole_tempest_plugin/tests/api/image/test_image_namespace_rbac.py +++ b/patrole_tempest_plugin/tests/api/image/test_image_namespace_rbac.py @@ -24,7 +24,7 @@ from patrole_tempest_plugin.tests.api.image import rbac_base class ImageNamespacesRbacTest(rbac_base.BaseV2ImageRbacTest): @rbac_rule_validation.action(service="glance", - rule="add_metadef_namespace") + rules=["add_metadef_namespace"]) @decorators.idempotent_id('e0730ead-b824-4ffc-b774-9469df0e4da6') def test_create_metadef_namespace(self): """Create Image Metadef Namespace Test @@ -43,7 +43,7 @@ class ImageNamespacesRbacTest(rbac_base.BaseV2ImageRbacTest): namespace_name) @rbac_rule_validation.action(service="glance", - rule="get_metadef_namespaces") + rules=["get_metadef_namespaces"]) @decorators.idempotent_id('f0b12538-9047-489e-98a5-2d78f48ce789') def test_list_metadef_namespaces(self): """List Image Metadef Namespace Test @@ -54,7 +54,7 @@ class ImageNamespacesRbacTest(rbac_base.BaseV2ImageRbacTest): self.namespaces_client.list_namespaces() @rbac_rule_validation.action(service="glance", - rule="modify_metadef_namespace") + rules=["modify_metadef_namespace"]) @decorators.idempotent_id('72c14a7e-927d-4f1a-9e1f-25475552922b') def test_modify_metadef_namespace(self): """Modify Image Metadef Namespace Test diff --git a/patrole_tempest_plugin/tests/api/image/test_image_namespace_tags_rbac.py b/patrole_tempest_plugin/tests/api/image/test_image_namespace_tags_rbac.py index 1a85b74a..bc387eed 100644 --- a/patrole_tempest_plugin/tests/api/image/test_image_namespace_tags_rbac.py +++ b/patrole_tempest_plugin/tests/api/image/test_image_namespace_tags_rbac.py @@ -67,14 +67,14 @@ class NamespaceTagsRbacTest(base.BaseV2ImageRbacTest): @decorators.idempotent_id('50bedccb-9d0b-4138-8d95-31a89250edf6') @rbac_rule_validation.action(service="glance", - rule="add_metadef_tag") + rules=["add_metadef_tag"]) def test_create_namespace_tag(self): with self.rbac_utils.override_role(self): self._create_namespace_tag() @decorators.idempotent_id('4acf70cc-05da-4b1e-87b2-d5e4475164e7') @rbac_rule_validation.action(service="glance", - rule="get_metadef_tag") + rules=["get_metadef_tag"]) def test_show_namespace_tag(self): tag_name = self._create_namespace_tag() with self.rbac_utils.override_role(self): @@ -83,7 +83,7 @@ class NamespaceTagsRbacTest(base.BaseV2ImageRbacTest): @decorators.idempotent_id('01593828-3edb-461e-8abc-8fdeb3927e37') @rbac_rule_validation.action(service="glance", - rule="modify_metadef_tag") + rules=["modify_metadef_tag"]) def test_update_namespace_tag(self): tag_name = self._create_namespace_tag() updated_tag_name = data_utils.rand_name( @@ -95,14 +95,14 @@ class NamespaceTagsRbacTest(base.BaseV2ImageRbacTest): @decorators.idempotent_id('20ffaf76-ebdc-4267-a1ad-194346f5cc91') @rbac_rule_validation.action(service="glance", - rule="add_metadef_tags") + rules=["add_metadef_tags"]) def test_create_namespace_tags(self): with self.rbac_utils.override_role(self): self._create_namespace_tag(multiple=True) @decorators.idempotent_id('d37c1501-e787-449d-89b3-754a942a459a') @rbac_rule_validation.action(service="glance", - rule="get_metadef_tags") + rules=["get_metadef_tags"]) def test_list_namespace_tags(self): with self.rbac_utils.override_role(self): self.namespace_tags_client.list_namespace_tags(self.namespace) diff --git a/patrole_tempest_plugin/tests/api/image/test_image_resource_types_rbac.py b/patrole_tempest_plugin/tests/api/image/test_image_resource_types_rbac.py index 7b031587..94f9cd4a 100644 --- a/patrole_tempest_plugin/tests/api/image/test_image_resource_types_rbac.py +++ b/patrole_tempest_plugin/tests/api/image/test_image_resource_types_rbac.py @@ -36,7 +36,7 @@ class ImageResourceTypesRbacTest(rbac_base.BaseV2ImageRbacTest): cls.namespaces_client.delete_namespace, cls.namespace_name) @rbac_rule_validation.action(service="glance", - rule="list_metadef_resource_types") + rules=["list_metadef_resource_types"]) @decorators.idempotent_id('0416fc4d-cfdc-447b-88b6-d9f1dd0382f7') def test_list_metadef_resource_types(self): """List Metadef Resource Type Image Test @@ -47,7 +47,7 @@ class ImageResourceTypesRbacTest(rbac_base.BaseV2ImageRbacTest): self.resource_types_client.list_resource_types() @rbac_rule_validation.action(service="glance", - rule="get_metadef_resource_type") + rules=["get_metadef_resource_type"]) @decorators.idempotent_id('3698d53c-71ae-4803-a2c3-c272c054f25c') def test_get_metadef_resource_type(self): """Get Metadef Resource Type Image Test @@ -58,8 +58,9 @@ class ImageResourceTypesRbacTest(rbac_base.BaseV2ImageRbacTest): self.resource_types_client.list_resource_type_association( self.namespace_name) - @rbac_rule_validation.action(service="glance", - rule="add_metadef_resource_type_association") + @rbac_rule_validation.action( + service="glance", + rules=["add_metadef_resource_type_association"]) @decorators.idempotent_id('ef9fbc60-3e28-4164-a25c-d30d892f7939') def test_add_metadef_resource_type(self): type_name = data_utils.rand_name() diff --git a/patrole_tempest_plugin/tests/api/image/test_images_member_rbac.py b/patrole_tempest_plugin/tests/api/image/test_images_member_rbac.py index 4b5fd086..656703a8 100644 --- a/patrole_tempest_plugin/tests/api/image/test_images_member_rbac.py +++ b/patrole_tempest_plugin/tests/api/image/test_images_member_rbac.py @@ -36,7 +36,7 @@ class ImagesMemberRbacTest(base.BaseV2ImageRbacTest): cls.image_member_client = cls.os_primary.image_member_client_v2 @rbac_rule_validation.action(service="glance", - rule="add_member") + rules=["add_member"]) @decorators.idempotent_id('b1b85ace-6484-11e6-881e-080027d0d606') def test_add_image_member(self): @@ -51,7 +51,7 @@ class ImagesMemberRbacTest(base.BaseV2ImageRbacTest): image_id, member=self.alt_tenant_id) @rbac_rule_validation.action(service="glance", - rule="delete_member") + rules=["delete_member"]) @decorators.idempotent_id('ba075234-6484-11e6-881e-080027d0d606') def test_delete_image_member(self): @@ -88,7 +88,7 @@ class ImagesMemberRbacTest(base.BaseV2ImageRbacTest): self.alt_tenant_id) @rbac_rule_validation.action(service="glance", - rule="modify_member") + rules=["modify_member"]) @decorators.idempotent_id('ca448bb2-6484-11e6-881e-080027d0d606') def test_update_image_member(self): @@ -110,7 +110,7 @@ class ImagesMemberRbacTest(base.BaseV2ImageRbacTest): status='pending') @rbac_rule_validation.action(service="glance", - rule="get_members") + rules=["get_members"]) @decorators.idempotent_id('d0a2dc20-6484-11e6-881e-080027d0d606') def test_list_image_members(self): diff --git a/patrole_tempest_plugin/tests/api/image/test_images_rbac.py b/patrole_tempest_plugin/tests/api/image/test_images_rbac.py index e97e803a..aa961126 100644 --- a/patrole_tempest_plugin/tests/api/image/test_images_rbac.py +++ b/patrole_tempest_plugin/tests/api/image/test_images_rbac.py @@ -42,7 +42,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): return self.image_client.store_image_file(image_id, image_file) @rbac_rule_validation.action(service="glance", - rule="add_image") + rules=["add_image"]) @decorators.idempotent_id('0f148510-63bf-11e6-b348-080027d0d606') def test_create_image(self): @@ -54,7 +54,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): self._create_image() @rbac_rule_validation.action(service="glance", - rule="upload_image") + rules=["upload_image"]) @decorators.idempotent_id('fdc0c7e2-ad58-4c5a-ba9d-1f6046a5b656') def test_upload_image(self): @@ -69,7 +69,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): @decorators.idempotent_id('f0c268f3-cb51-49aa-9bd5-d30cf647322f') @rbac_rule_validation.action(service="glance", - rule="download_image") + rules=["download_image"]) def test_download_image(self): """Download Image Test @@ -83,7 +83,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): self.image_client.show_image_file(image['id']) @rbac_rule_validation.action(service="glance", - rule="delete_image") + rules=["delete_image"]) @decorators.idempotent_id('3b5c341e-645b-11e6-ac4f-080027d0d606') def test_delete_image(self): @@ -98,7 +98,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): self.image_client.wait_for_resource_deletion(image['id']) @rbac_rule_validation.action(service="glance", - rule="get_image") + rules=["get_image"]) @decorators.idempotent_id('3085c7c6-645b-11e6-ac4f-080027d0d606') def test_show_image(self): @@ -112,7 +112,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): self.image_client.show_image(image['id']) @rbac_rule_validation.action(service="glance", - rule="get_images") + rules=["get_images"]) @decorators.idempotent_id('bf1a4e94-645b-11e6-ac4f-080027d0d606') def test_list_images(self): @@ -124,7 +124,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): self.image_client.list_images()['images'] @rbac_rule_validation.action(service="glance", - rule="modify_image") + rules=["modify_image"]) @decorators.idempotent_id('32ecf48c-645e-11e6-ac4f-080027d0d606') def test_update_image(self): @@ -142,7 +142,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): @decorators.idempotent_id('244050d9-1b9a-446a-b3c5-f26f3ba8eb75') @rbac_rule_validation.action(service="glance", - rule="modify_image") + rules=["modify_image"]) def test_create_image_tag(self): """Create image tag @@ -158,7 +158,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): @decorators.idempotent_id('c4a0bf9c-b78b-48c6-a31f-72c95f943c6e') @rbac_rule_validation.action(service="glance", - rule="modify_image") + rules=["modify_image"]) def test_delete_image_tag(self): """Delete image tag @@ -173,7 +173,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): self.image_client.delete_image_tag(image['id'], tag_name) @rbac_rule_validation.action(service="glance", - rule="publicize_image") + rules=["publicize_image"]) @decorators.idempotent_id('0ea4809c-6461-11e6-ac4f-080027d0d606') def test_publicize_image(self): @@ -186,7 +186,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): @decorators.idempotent_id('0f2d8427-134a-4d3c-a102-5fcdf5443d09') @rbac_rule_validation.action(service="glance", - rule="communitize_image") + rules=["communitize_image"]) def test_communitize_image(self): """Communitize Image Test @@ -197,7 +197,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): self._create_image(visibility='community') @rbac_rule_validation.action(service="glance", - rule="deactivate") + rules=["deactivate"]) @decorators.idempotent_id('b488458c-65df-11e6-9947-080027824017') def test_deactivate_image(self): @@ -212,7 +212,7 @@ class BasicOperationsImagesRbacTest(rbac_base.BaseV2ImageRbacTest): self.image_client.deactivate_image(image['id']) @rbac_rule_validation.action(service="glance", - rule="reactivate") + rules=["reactivate"]) @decorators.idempotent_id('d3fa28b8-65df-11e6-9947-080027824017') def test_reactivate_image(self): diff --git a/patrole_tempest_plugin/tests/api/network/test_agents_rbac.py b/patrole_tempest_plugin/tests/api/network/test_agents_rbac.py index 9d7adc4b..c778d9c5 100644 --- a/patrole_tempest_plugin/tests/api/network/test_agents_rbac.py +++ b/patrole_tempest_plugin/tests/api/network/test_agents_rbac.py @@ -100,7 +100,7 @@ class L3AgentSchedulerRbacTest(base.BaseNetworkRbacTest): @decorators.idempotent_id('5d2bbdbc-40a5-43d2-828a-84dc93fcc453') @rbac_rule_validation.action(service="neutron", - rule="get_l3-routers") + rules=["get_l3-routers"]) def test_list_routers_on_l3_agent(self): """List routers on L3 agent test. @@ -111,7 +111,7 @@ class L3AgentSchedulerRbacTest(base.BaseNetworkRbacTest): @decorators.idempotent_id('466b2a10-8747-4c09-855a-bd90a1c86ce7') @rbac_rule_validation.action(service="neutron", - rule="create_l3-router") + rules=["create_l3-router"]) def test_create_router_on_l3_agent(self): """Create router on L3 agent test. @@ -127,7 +127,7 @@ class L3AgentSchedulerRbacTest(base.BaseNetworkRbacTest): @decorators.idempotent_id('8138cfc9-3e48-4a34-adf6-894077aa1be4') @rbac_rule_validation.action(service="neutron", - rule="delete_l3-router") + rules=["delete_l3-router"]) def test_delete_router_from_l3_agent(self): """Delete router from L3 agent test. @@ -193,7 +193,7 @@ class DHCPAgentSchedulersRbacTest(base.BaseNetworkRbacTest): @decorators.idempotent_id('dc84087b-4c2a-4878-8ed0-40370e19da17') @rbac_rule_validation.action(service="neutron", - rule="get_dhcp-networks") + rules=["get_dhcp-networks"]) def test_list_networks_hosted_by_one_dhcp_agent(self): """List networks hosted by one DHCP agent test. @@ -205,7 +205,7 @@ class DHCPAgentSchedulersRbacTest(base.BaseNetworkRbacTest): @decorators.idempotent_id('14e014ac-f355-46d3-b6d8-98f2c9ec1610') @rbac_rule_validation.action(service="neutron", - rule="create_dhcp-network") + rules=["create_dhcp-network"]) def test_add_dhcp_agent_to_network(self): """Add DHCP agent to network test. @@ -221,7 +221,7 @@ class DHCPAgentSchedulersRbacTest(base.BaseNetworkRbacTest): @decorators.idempotent_id('937a4302-4b49-407d-9980-5843d7badc38') @rbac_rule_validation.action(service="neutron", - rule="delete_dhcp-network") + rules=["delete_dhcp-network"]) def test_delete_network_from_dhcp_agent(self): """Delete DHCP agent from network test. @@ -255,7 +255,7 @@ class L3AgentsPluginRbacTest(base.BaseNetworkPluginRbacTest): @decorators.idempotent_id('5d2bbdbc-40a5-43d2-828a-84dc93bcd321') @rbac_rule_validation.action(service="neutron", - rule="get_l3-agents") + rules=["get_l3-agents"]) def test_list_l3_agents_on_router(self): """List L3 agents on router test. diff --git a/patrole_tempest_plugin/tests/api/network/test_floating_ips_rbac.py b/patrole_tempest_plugin/tests/api/network/test_floating_ips_rbac.py index 8a02149a..336490aa 100644 --- a/patrole_tempest_plugin/tests/api/network/test_floating_ips_rbac.py +++ b/patrole_tempest_plugin/tests/api/network/test_floating_ips_rbac.py @@ -63,7 +63,7 @@ class FloatingIpsRbacTest(base.BaseNetworkRbacTest): return floating_ip @rbac_rule_validation.action(service="neutron", - rule="create_floatingip") + rules=["create_floatingip"]) @decorators.idempotent_id('f8f7474c-b8a5-4174-af84-73097d6ced38') def test_create_floating_ip(self): """Create floating IP. diff --git a/patrole_tempest_plugin/tests/api/network/test_metering_label_rules_rbac.py b/patrole_tempest_plugin/tests/api/network/test_metering_label_rules_rbac.py index db099a11..bf490539 100644 --- a/patrole_tempest_plugin/tests/api/network/test_metering_label_rules_rbac.py +++ b/patrole_tempest_plugin/tests/api/network/test_metering_label_rules_rbac.py @@ -63,7 +63,7 @@ class MeteringLabelRulesRbacTest(base.BaseNetworkRbacTest): return label_rule @rbac_rule_validation.action(service="neutron", - rule="create_metering_label_rule") + rules=["create_metering_label_rule"]) @decorators.idempotent_id('81e81776-9d41-4d5e-b5c4-59d5c54a31ad') def test_create_metering_label_rule(self): """Create metering label rule. diff --git a/patrole_tempest_plugin/tests/api/network/test_metering_labels_rbac.py b/patrole_tempest_plugin/tests/api/network/test_metering_labels_rbac.py index 0e10f5b0..ed6e3162 100644 --- a/patrole_tempest_plugin/tests/api/network/test_metering_labels_rbac.py +++ b/patrole_tempest_plugin/tests/api/network/test_metering_labels_rbac.py @@ -47,7 +47,7 @@ class MeteringLabelsRbacTest(base.BaseNetworkRbacTest): return label @rbac_rule_validation.action(service="neutron", - rule="create_metering_label") + rules=["create_metering_label"]) @decorators.idempotent_id('e8cfc8b8-c159-48f0-93b3-591625a02f8b') def test_create_metering_label(self): """Create metering label. diff --git a/patrole_tempest_plugin/tests/api/network/test_networks_rbac.py b/patrole_tempest_plugin/tests/api/network/test_networks_rbac.py index 2e69f898..96ba3780 100644 --- a/patrole_tempest_plugin/tests/api/network/test_networks_rbac.py +++ b/patrole_tempest_plugin/tests/api/network/test_networks_rbac.py @@ -97,7 +97,7 @@ class NetworksRbacTest(base.BaseNetworkRbacTest): return updated_network @rbac_rule_validation.action(service="neutron", - rule="create_network") + rules=["create_network"]) @decorators.idempotent_id('95b9baab-1ece-4e2b-89c8-8d671d974e54') def test_create_network(self): @@ -447,7 +447,7 @@ class NetworksRbacTest(base.BaseNetworkRbacTest): @utils.requires_ext(extension='dhcp_agent_scheduler', service='network') @decorators.idempotent_id('b524f19f-fbb4-4d11-a85d-03bfae17bf0e') @rbac_rule_validation.action(service="neutron", - rule="get_dhcp-agents") + rules=["get_dhcp-agents"]) def test_list_dhcp_agents_on_hosting_network(self): """List DHCP Agents on Hosting Network Test diff --git a/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py b/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py index 175d051e..b65bd73c 100644 --- a/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py +++ b/patrole_tempest_plugin/tests/api/network/test_ports_rbac.py @@ -59,7 +59,7 @@ class PortsRbacTest(base.BaseNetworkRbacTest): return ip_list @rbac_rule_validation.action(service="neutron", - rule="create_port") + rules=["create_port"]) @decorators.idempotent_id('0ec8c551-625c-4864-8a52-85baa7c40f22') def test_create_port(self): diff --git a/patrole_tempest_plugin/tests/api/network/test_routers_rbac.py b/patrole_tempest_plugin/tests/api/network/test_routers_rbac.py index 3d7631af..f850a3eb 100644 --- a/patrole_tempest_plugin/tests/api/network/test_routers_rbac.py +++ b/patrole_tempest_plugin/tests/api/network/test_routers_rbac.py @@ -56,7 +56,7 @@ class RouterRbacTest(base.BaseNetworkRbacTest): return unused_ip[0] @rbac_rule_validation.action(service="neutron", - rule="create_router") + rules=["create_router"]) @decorators.idempotent_id('acc5005c-bdb6-4192-bc9f-ece9035bb488') def test_create_router(self): """Create Router diff --git a/patrole_tempest_plugin/tests/api/network/test_security_groups_rbac.py b/patrole_tempest_plugin/tests/api/network/test_security_groups_rbac.py index 4536fdb5..9112bf65 100644 --- a/patrole_tempest_plugin/tests/api/network/test_security_groups_rbac.py +++ b/patrole_tempest_plugin/tests/api/network/test_security_groups_rbac.py @@ -70,7 +70,7 @@ class SecGroupRbacTest(base.BaseNetworkRbacTest): return sec_group_rule @rbac_rule_validation.action(service="neutron", - rule="create_security_group") + rules=["create_security_group"]) @decorators.idempotent_id('db7003ce-5717-4e5b-afc7-befa35e8c67f') def test_create_security_group(self): @@ -116,7 +116,7 @@ class SecGroupRbacTest(base.BaseNetworkRbacTest): description="test description") @rbac_rule_validation.action(service="neutron", - rule="get_security_group") + rules=["get_security_group"]) @decorators.idempotent_id('fbaf8d96-ed3e-49af-b24c-5fb44f05bbb7') def test_list_security_groups(self): @@ -129,7 +129,7 @@ class SecGroupRbacTest(base.BaseNetworkRbacTest): raise rbac_exceptions.RbacMalformedResponse(empty=True) @rbac_rule_validation.action(service="neutron", - rule="create_security_group_rule") + rules=["create_security_group_rule"]) @decorators.idempotent_id('953d78df-00cd-416f-9cbd-b7cb4ea65772') def test_create_security_group_rule(self): @@ -160,7 +160,7 @@ class SecGroupRbacTest(base.BaseNetworkRbacTest): sec_group_rule['id']) @rbac_rule_validation.action(service="neutron", - rule="get_security_group_rule") + rules=["get_security_group_rule"]) @decorators.idempotent_id('05739ab6-fa35-11e6-bc64-92361f002671') def test_list_security_group_rules(self): diff --git a/patrole_tempest_plugin/tests/api/network/test_service_providers_rbac.py b/patrole_tempest_plugin/tests/api/network/test_service_providers_rbac.py index fd85444a..561a72cd 100644 --- a/patrole_tempest_plugin/tests/api/network/test_service_providers_rbac.py +++ b/patrole_tempest_plugin/tests/api/network/test_service_providers_rbac.py @@ -22,7 +22,7 @@ from patrole_tempest_plugin.tests.api.network import rbac_base as base class ServiceProvidersRbacTest(base.BaseNetworkRbacTest): @rbac_rule_validation.action(service="neutron", - rule="get_service_provider") + rules=["get_service_provider"]) @decorators.idempotent_id('15f573b7-474a-4b37-8629-7fac86553ce5') def test_list_service_providers(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/network/test_subnetpools_rbac.py b/patrole_tempest_plugin/tests/api/network/test_subnetpools_rbac.py index 62735d74..bc6b9231 100644 --- a/patrole_tempest_plugin/tests/api/network/test_subnetpools_rbac.py +++ b/patrole_tempest_plugin/tests/api/network/test_subnetpools_rbac.py @@ -53,7 +53,7 @@ class SubnetPoolsRbacTest(base.BaseNetworkRbacTest): return subnetpool @rbac_rule_validation.action(service="neutron", - rule="create_subnetpool") + rules=["create_subnetpool"]) @decorators.idempotent_id('1b5509fd-2c32-44a8-a786-1b6ca162dbd1') def test_create_subnetpool(self): """Create subnetpool. diff --git a/patrole_tempest_plugin/tests/api/network/test_subnets_rbac.py b/patrole_tempest_plugin/tests/api/network/test_subnets_rbac.py index 93d79a99..9a5ebe49 100644 --- a/patrole_tempest_plugin/tests/api/network/test_subnets_rbac.py +++ b/patrole_tempest_plugin/tests/api/network/test_subnets_rbac.py @@ -39,7 +39,7 @@ class SubnetsRbacTest(base.BaseNetworkRbacTest): @decorators.idempotent_id('0481adeb-4301-44d5-851c-35910cc18a6b') @rbac_rule_validation.action(service="neutron", - rule="create_subnet") + rules=["create_subnet"]) def test_create_subnet(self): """Create subnet. @@ -62,7 +62,7 @@ class SubnetsRbacTest(base.BaseNetworkRbacTest): @decorators.idempotent_id('e2ddc415-5cab-43f4-9b61-166aed65d637') @rbac_rule_validation.action(service="neutron", - rule="get_subnet") + rules=["get_subnet"]) def test_list_subnets(self): """List subnets. diff --git a/patrole_tempest_plugin/tests/api/volume/test_capabilities_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_capabilities_rbac.py index 82b89ab1..fa1157aa 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_capabilities_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_capabilities_rbac.py @@ -36,7 +36,7 @@ class CapabilitiesV3RbacTest(rbac_base.BaseVolumeRbacTest): cls.hosts_client = cls.os_primary.volume_hosts_v2_client @rbac_rule_validation.action(service="cinder", - rule="volume_extension:capabilities") + rules=["volume_extension:capabilities"]) @decorators.idempotent_id('40928b74-2141-11e7-93ae-92361f002671') def test_show_back_end_capabilities(self): host = self.hosts_client.list_hosts()['hosts'][0]['host_name'] diff --git a/patrole_tempest_plugin/tests/api/volume/test_encryption_types_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_encryption_types_rbac.py index 2ee80eb0..0eb02441 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_encryption_types_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_encryption_types_rbac.py @@ -69,7 +69,7 @@ class EncryptionTypesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('ffd94ce5-c24b-4b6c-84c9-c5aad8c3010c') @rbac_rule_validation.action( service="cinder", - rule=_CREATE_VOLUME_TYPE_ENCRYPTION) + rules=[_CREATE_VOLUME_TYPE_ENCRYPTION]) def test_create_volume_type_encryption(self): vol_type_id = self.create_volume_type()['id'] with self.rbac_utils.override_role(self): @@ -81,7 +81,7 @@ class EncryptionTypesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('6599e72e-acef-4c0d-a9b2-463fca30d1da') @rbac_rule_validation.action( service="cinder", - rule=_DELETE_VOLUME_TYPE_ENCRYPTION) + rules=[_DELETE_VOLUME_TYPE_ENCRYPTION]) def test_delete_volume_type_encryption(self): vol_type_id = self._create_volume_type_encryption() with self.rbac_utils.override_role(self): @@ -90,7 +90,7 @@ class EncryptionTypesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('42da9fec-32fd-4dca-9242-8a53b2fed25a') @rbac_rule_validation.action( service="cinder", - rule=_UPDATE_VOLUME_TYPE_ENCRYPTION) + rules=[_UPDATE_VOLUME_TYPE_ENCRYPTION]) def test_update_volume_type_encryption(self): vol_type_id = self._create_volume_type_encryption() with self.rbac_utils.override_role(self): @@ -101,7 +101,7 @@ class EncryptionTypesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('1381a3dc-248f-4282-b231-c9399018c804') @rbac_rule_validation.action( service="cinder", - rule=_SHOW_VOLUME_TYPE_ENCRYPTION) + rules=[_SHOW_VOLUME_TYPE_ENCRYPTION]) def test_show_volume_type_encryption(self): vol_type_id = self._create_volume_type_encryption() with self.rbac_utils.override_role(self): @@ -110,7 +110,7 @@ class EncryptionTypesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('d4ed3cf8-52b2-4fa2-910d-e405361f0881') @rbac_rule_validation.action( service="cinder", - rule=_SHOW_VOLUME_TYPE_ENCRYPTION) + rules=[_SHOW_VOLUME_TYPE_ENCRYPTION]) def test_show_encryption_specs_item(self): vol_type_id = self._create_volume_type_encryption() with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/volume/test_group_snapshots_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_group_snapshots_rbac.py index 73d7bf2e..1d59f9bf 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_group_snapshots_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_group_snapshots_rbac.py @@ -89,7 +89,7 @@ class GroupSnaphotsV314RbacTest(BaseGroupSnapshotsRbacTest): @decorators.idempotent_id('653df0e8-d90a-474a-a5ce-3c2339aff7ba') @rbac_rule_validation.action( service="cinder", - rule="group:create_group_snapshot" + rules=["group:create_group_snapshot"] ) def test_create_group_snapshot(self): with self.rbac_utils.override_role(self): @@ -112,7 +112,7 @@ class GroupSnaphotsV314RbacTest(BaseGroupSnapshotsRbacTest): @decorators.idempotent_id('8b966844-4421-4f73-940b-9157cb878331') @rbac_rule_validation.action( service="cinder", - rule="group:get_group_snapshot" + rules=["group:get_group_snapshot"] ) def test_show_group_snapshot_rbac(self): group_snapshot_name = data_utils.rand_name('group_snapshot') @@ -125,7 +125,7 @@ class GroupSnaphotsV314RbacTest(BaseGroupSnapshotsRbacTest): @decorators.idempotent_id('e9de6dae-1efb-47cd-a3a8-d1f4b8f9f3ff') @rbac_rule_validation.action( service="cinder", - rule="group:get_all_group_snapshots" + rules=["group:get_all_group_snapshots"] ) def test_list_group_snapshot_rbac(self): with self.rbac_utils.override_role(self): @@ -134,7 +134,7 @@ class GroupSnaphotsV314RbacTest(BaseGroupSnapshotsRbacTest): @decorators.idempotent_id('cf2e25ee-ca58-4ad6-b98d-33235c77db7b') @rbac_rule_validation.action( service="cinder", - rule="group:delete_group_snapshot" + rules=["group:delete_group_snapshot"] ) def test_delete_group_snapshot_rbac(self): group_snapshot_name = data_utils.rand_name('group_snapshot') @@ -186,7 +186,7 @@ class GroupSnaphotsV319RbacTest(BaseGroupSnapshotsRbacTest): @decorators.idempotent_id('3f0c842e-0c72-4f5e-a9c2-281070be3e2c') @rbac_rule_validation.action( service="cinder", - rule="group:reset_group_snapshot_status" + rules=["group:reset_group_snapshot_status"] ) def test_reset_group_snapshot_rbac(self): group_snapshot_name = data_utils.rand_name('group_snapshot') diff --git a/patrole_tempest_plugin/tests/api/volume/test_group_type_specs.py b/patrole_tempest_plugin/tests/api/volume/test_group_type_specs.py index a34a55d1..9c41dfcc 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_group_type_specs.py +++ b/patrole_tempest_plugin/tests/api/volume/test_group_type_specs.py @@ -27,7 +27,7 @@ class GroupTypeSpecsRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('b2859734-00ad-4a22-88ee-541698e90d12') @rbac_rule_validation.action( service="cinder", - rule="group:group_types_specs" + rules=["group:group_types_specs"] ) def test_group_type_specs_create(self): # Create new group type @@ -47,7 +47,7 @@ class GroupTypeSpecsRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('469d0253-aa13-423f-8264-231ac17effbf') @rbac_rule_validation.action( service="cinder", - rule="group:group_types_specs" + rules=["group:group_types_specs"] ) def test_group_type_specs_show(self): group_type = self.create_group_type() @@ -65,7 +65,7 @@ class GroupTypeSpecsRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('2e706a4e-dec9-46bf-9426-1c5b6f3ce102') @rbac_rule_validation.action( service="cinder", - rule="group:group_types_specs" + rules=["group:group_types_specs"] ) def test_group_type_specs_update(self): group_type = self.create_group_type() @@ -81,7 +81,7 @@ class GroupTypeSpecsRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('fd5e332b-fb2c-4957-ace9-11d60ddd5472') @rbac_rule_validation.action( service="cinder", - rule="group:group_types_specs" + rules=["group:group_types_specs"] ) def test_group_type_specs_list(self): group_type = self.create_group_type() @@ -92,7 +92,7 @@ class GroupTypeSpecsRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('d9639a07-e441-4576-baf6-7ec732b16572') @rbac_rule_validation.action( service="cinder", - rule="group:group_types_specs" + rules=["group:group_types_specs"] ) def test_group_type_specs_delete(self): group_type = self.create_group_type() diff --git a/patrole_tempest_plugin/tests/api/volume/test_groups_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_groups_rbac.py index ecd193be..c117d23a 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_groups_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_groups_rbac.py @@ -63,7 +63,7 @@ class GroupsV3RbacTest(BaseGroupRbacTest): @decorators.idempotent_id('43235328-66ae-424f-bc7f-f709c0ca268c') @rbac_rule_validation.action( service="cinder", - rule="group:create") + rules=["group:create"]) def test_create_group(self, name=None): group_name = name or data_utils.rand_name( @@ -80,7 +80,7 @@ class GroupsV3RbacTest(BaseGroupRbacTest): @decorators.idempotent_id('9dc34a62-ae3e-439e-92b6-9389ea4c2863') @rbac_rule_validation.action( service="cinder", - rule="group:get") + rules=["group:get"]) def test_show_group(self): group = self._create_group(group_type=self.group_type_id, volume_types=[self.volume_type_id]) @@ -91,7 +91,7 @@ class GroupsV3RbacTest(BaseGroupRbacTest): @decorators.idempotent_id('db43841b-a173-4317-acfc-f83e4e48e4ee') @rbac_rule_validation.action( service="cinder", - rule="group:get_all") + rules=["group:get_all"]) def test_list_groups(self): with self.rbac_utils.override_role(self): self.groups_client.list_groups()['groups'] @@ -99,7 +99,7 @@ class GroupsV3RbacTest(BaseGroupRbacTest): @decorators.idempotent_id('5378da93-9c26-4ad4-b039-0555e2b8f668') @rbac_rule_validation.action( service="cinder", - rule="group:get_all") + rules=["group:get_all"]) def test_list_groups_with_details(self): with self.rbac_utils.override_role(self): self.groups_client.list_groups(detail=True)['groups'] @@ -107,7 +107,7 @@ class GroupsV3RbacTest(BaseGroupRbacTest): @decorators.idempotent_id('f499fc48-df83-4917-bf8d-783ebf6f080b') @rbac_rule_validation.action( service="cinder", - rule="group:update") + rules=["group:update"]) def test_update_group(self): group = self._create_group(group_type=self.group_type_id, volume_types=[self.volume_type_id]) @@ -119,7 +119,7 @@ class GroupsV3RbacTest(BaseGroupRbacTest): @decorators.idempotent_id('66fda391-5774-42a9-a018-80b34e57ab76') @rbac_rule_validation.action( service="cinder", - rule="group:delete") + rules=["group:delete"]) def test_delete_group(self): group = self._create_group(ignore_notfound=True, @@ -146,7 +146,7 @@ class GroupV320RbacTest(BaseGroupRbacTest): @decorators.idempotent_id('b849c1d4-3215-4f9d-b1e6-0aeb4b2b65ac') @rbac_rule_validation.action( service="cinder", - rule="group:reset_status") + rules=["group:reset_status"]) def test_reset_group_status(self): group = self._create_group(ignore_notfound=False, group_type=self.group_type_id, @@ -166,7 +166,7 @@ class GroupTypesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('2820f12c-4681-4c7f-b28d-e6925637dff6') @rbac_rule_validation.action( service="cinder", - rule="group:group_types_manage") + rules=["group:group_types_manage"]) def test_create_group_type(self): with self.rbac_utils.override_role(self): self.create_group_type(ignore_notfound=True) @@ -174,7 +174,7 @@ class GroupTypesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('f77f8156-4fc9-4f02-be15-8930f748e10c') @rbac_rule_validation.action( service="cinder", - rule="group:group_types_manage") + rules=["group:group_types_manage"]) def test_delete_group_type(self): group_type = self.create_group_type(ignore_notfound=True) @@ -184,7 +184,7 @@ class GroupTypesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('67929954-4551-4d22-b15a-27fb6e56b711') @rbac_rule_validation.action( service="cinder", - rule="group:group_types_manage") + rules=["group:group_types_manage"]) def test_update_group_type(self): group_type = self.create_group_type() update_params = { @@ -199,7 +199,7 @@ class GroupTypesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('a5f88c26-df7c-4f21-a3ae-7a4c2d6212b4') @rbac_rule_validation.action( service="cinder", - rule="group:access_group_types_specs") + rules=["group:access_group_types_specs"]) def test_create_group_type_group_specs(self): # TODO(felipemonteiro): Combine with ``test_create_group_type`` # once multiple policy testing is supported. This policy is @@ -214,7 +214,7 @@ class GroupTypesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('8d9e2831-24c3-47b7-a76a-2e563287f12f') @rbac_rule_validation.action( service="cinder", - rule="group:access_group_types_specs") + rules=["group:access_group_types_specs"]) def test_show_group_type(self): group_type = self.create_group_type() with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/volume/test_limits_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_limits_rbac.py index aec5cb12..3127d83f 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_limits_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_limits_rbac.py @@ -33,7 +33,7 @@ class LimitsV3RbacTest(rbac_base.BaseVolumeRbacTest): '"limits_extension:used_limits" must be available in the cloud.') @decorators.idempotent_id('dab04510-5b86-4479-a633-6e496ff405af') @rbac_rule_validation.action(service="cinder", - rule="limits_extension:used_limits") + rules=["limits_extension:used_limits"]) def test_show_limits(self): # It is enough to check whether any of the following keys below # are in the response body under ['limits']['absolute'], but no harm diff --git a/patrole_tempest_plugin/tests/api/volume/test_qos_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_qos_rbac.py index a62bbda0..5664bf97 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_qos_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_qos_rbac.py @@ -39,31 +39,32 @@ class VolumeQOSV3RbacTest(rbac_base.BaseVolumeRbacTest): return qos_specs @rbac_rule_validation.action( - service="cinder", rule="volume_extension:qos_specs_manage:create") + service="cinder", rules=["volume_extension:qos_specs_manage:create"]) @decorators.idempotent_id('4f9f45f0-b379-4577-a279-cec3e917cbec') def test_create_qos_with_consumer(self): with self.rbac_utils.override_role(self): self._create_test_qos_specs() @rbac_rule_validation.action( - service="cinder", rule="volume_extension:qos_specs_manage:delete") + service="cinder", rules=["volume_extension:qos_specs_manage:delete"]) @decorators.idempotent_id('fbc8a77e-6b6d-45ae-bebe-c496eb8f06f7') def test_delete_qos_with_consumer(self): qos = self._create_test_qos_specs() with self.rbac_utils.override_role(self): self.qos_client.delete_qos(qos['id']) - @rbac_rule_validation.action(service="cinder", - rule="volume_extension:qos_specs_manage:get") + @rbac_rule_validation.action( + service="cinder", + rules=["volume_extension:qos_specs_manage:get"]) @decorators.idempotent_id('22aff0dd-0343-408d-ae80-e77551956e14') def test_show_qos(self): qos = self._create_test_qos_specs() with self.rbac_utils.override_role(self): self.qos_client.show_qos(qos['id'])['qos_specs'] - @rbac_rule_validation.action(service="cinder", - rule="volume_extension:" - "qos_specs_manage:get_all") + @rbac_rule_validation.action( + service="cinder", + rules=["volume_extension:qos_specs_manage:get_all"]) @decorators.idempotent_id('ff1e98f3-d456-40a9-96d4-c7e4a55dcffa') def test_get_association_qos(self): qos = self._create_test_qos_specs() @@ -76,14 +77,14 @@ class VolumeQOSV3RbacTest(rbac_base.BaseVolumeRbacTest): @rbac_rule_validation.action( service="cinder", - rule="volume_extension:qos_specs_manage:get_all") + rules=["volume_extension:qos_specs_manage:get_all"]) @decorators.idempotent_id('546b8bb1-04a4-4387-9506-a538a7f3cd6a') def test_list_qos(self): with self.rbac_utils.override_role(self): self.qos_client.list_qos()['qos_specs'] @rbac_rule_validation.action( - service="cinder", rule="volume_extension:qos_specs_manage:update") + service="cinder", rules=["volume_extension:qos_specs_manage:update"]) @decorators.idempotent_id('89b630b7-c170-47c3-ac80-50ed425c2d98') def test_set_qos_key(self): qos = self._create_test_qos_specs() @@ -92,7 +93,7 @@ class VolumeQOSV3RbacTest(rbac_base.BaseVolumeRbacTest): qos['id'], iops_bytes='500')['qos_specs'] @rbac_rule_validation.action( - service="cinder", rule="volume_extension:qos_specs_manage:update") + service="cinder", rules=["volume_extension:qos_specs_manage:update"]) @decorators.idempotent_id('6c50c837-de77-4dae-a2ec-30e05c62969c') def test_unset_qos_key(self): qos = self._create_test_qos_specs() @@ -104,7 +105,7 @@ class VolumeQOSV3RbacTest(rbac_base.BaseVolumeRbacTest): 'qos-key-unset', args=['iops_bytes']) @rbac_rule_validation.action( - service="cinder", rule="volume_extension:qos_specs_manage:update") + service="cinder", rules=["volume_extension:qos_specs_manage:update"]) @decorators.idempotent_id('2047b347-8bbe-405e-bf5a-c75a0d7e3930') def test_associate_qos(self): qos = self._create_test_qos_specs() @@ -117,7 +118,7 @@ class VolumeQOSV3RbacTest(rbac_base.BaseVolumeRbacTest): self.qos_client.disassociate_qos, qos['id'], vol_type) @rbac_rule_validation.action( - service="cinder", rule="volume_extension:qos_specs_manage:update") + service="cinder", rules=["volume_extension:qos_specs_manage:update"]) @decorators.idempotent_id('f12aeca1-0c02-4f33-b805-014171e5b2d4') def test_disassociate_qos(self): qos = self._create_test_qos_specs() @@ -132,7 +133,7 @@ class VolumeQOSV3RbacTest(rbac_base.BaseVolumeRbacTest): 'disassociate', args=vol_type) @rbac_rule_validation.action( - service="cinder", rule="volume_extension:qos_specs_manage:update") + service="cinder", rules=["volume_extension:qos_specs_manage:update"]) @decorators.idempotent_id('9f6e664d-a5d9-4e71-b122-73a3086be1b9') def test_disassociate_all_qos(self): qos = self._create_test_qos_specs() diff --git a/patrole_tempest_plugin/tests/api/volume/test_quota_classes_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_quota_classes_rbac.py index dace257b..dcc67f65 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_quota_classes_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_quota_classes_rbac.py @@ -39,7 +39,7 @@ class QuotaClassesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('1a060def-2b43-4534-97f5-5eadbbe8c726') @rbac_rule_validation.action(service="cinder", - rule="volume_extension:quota_classes") + rules=["volume_extension:quota_classes"]) def test_show_quota_class_set(self): with self.rbac_utils.override_role(self): self.quota_classes_client.show_quota_class_set( @@ -47,7 +47,7 @@ class QuotaClassesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('72159478-23a7-4c75-989f-6bac609eca62') @rbac_rule_validation.action(service="cinder", - rule="volume_extension:quota_classes") + rules=["volume_extension:quota_classes"]) def test_update_quota_class_set(self): quota_class_set = self.quota_classes_client.show_quota_class_set( self.quota_name)['quota_class_set'] diff --git a/patrole_tempest_plugin/tests/api/volume/test_scheduler_stats_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_scheduler_stats_rbac.py index a243587c..efcfdaf4 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_scheduler_stats_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_scheduler_stats_rbac.py @@ -37,7 +37,7 @@ class SchedulerStatsV3RbacTest(rbac_base.BaseVolumeRbacTest): @rbac_rule_validation.action( service="cinder", - rule="scheduler_extension:scheduler_stats:get_pools") + rules=["scheduler_extension:scheduler_stats:get_pools"]) @decorators.idempotent_id('5f800441-4d30-48ec-9e5b-0d55bc86acbb') def test_list_back_end_storage_pools(self): with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/volume/test_snapshot_manage_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_snapshot_manage_rbac.py index d2380458..e2887e05 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_snapshot_manage_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_snapshot_manage_rbac.py @@ -51,7 +51,7 @@ class SnapshotManageRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('bd7d62f2-e485-4626-87ef-03b7f19ee1d0') @rbac_rule_validation.action( service="cinder", - rule="snapshot_extension:snapshot_manage") + rules=["snapshot_extension:snapshot_manage"]) def test_manage_snapshot_rbac(self): name = data_utils.rand_name(self.__class__.__name__ + '-Managed-Snapshot') @@ -73,7 +73,7 @@ class SnapshotManageRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('4a2e8934-9c0b-434e-8f0b-e18b9aff126f') @rbac_rule_validation.action( service="cinder", - rule="snapshot_extension:snapshot_unmanage") + rules=["snapshot_extension:snapshot_unmanage"]) def test_unmanage_snapshot_rbac(self): with self.rbac_utils.override_role(self): self.snapshots_client.unmanage_snapshot(self.snapshot['id']) diff --git a/patrole_tempest_plugin/tests/api/volume/test_snapshots_actions_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_snapshots_actions_rbac.py index 65b7526f..ed42b2df 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_snapshots_actions_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_snapshots_actions_rbac.py @@ -49,7 +49,7 @@ class SnapshotsActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): @rbac_rule_validation.action( service="cinder", - rule="volume_extension:snapshot_admin_actions:reset_status") + rules=["volume_extension:snapshot_admin_actions:reset_status"]) @decorators.idempotent_id('ea430145-34ef-408d-b678-95d5ae5f46eb') def test_reset_snapshot_status(self): status = 'error' @@ -61,7 +61,7 @@ class SnapshotsActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): @rbac_rule_validation.action( service="cinder", - rule="volume_extension:snapshot_admin_actions:force_delete") + rules=["volume_extension:snapshot_admin_actions:force_delete"]) @decorators.idempotent_id('a8b0f7d8-4c00-4645-b8d5-33ab4eecc6cb') def test_snapshot_force_delete(self): temp_snapshot = self.create_snapshot(self.volume['id']) @@ -73,7 +73,7 @@ class SnapshotsActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('a95eab2a-c441-4609-9235-f7478627da88') @rbac_rule_validation.action( service="cinder", - rule="snapshot_extension:snapshot_actions:update_snapshot_status") + rules=["snapshot_extension:snapshot_actions:update_snapshot_status"]) def test_update_snapshot_status(self): status = 'creating' self.snapshots_client.reset_snapshot_status( diff --git a/patrole_tempest_plugin/tests/api/volume/test_snapshots_metadata_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_snapshots_metadata_rbac.py index 1c5fb2e4..1141b7ee 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_snapshots_metadata_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_snapshots_metadata_rbac.py @@ -48,7 +48,7 @@ class SnapshotMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): self.snapshot_id, metadata)['metadata'] @rbac_rule_validation.action(service="cinder", - rule="volume:get_snapshot_metadata") + rules=["volume:get_snapshot_metadata"]) @decorators.idempotent_id('f6912bb1-62e6-483d-bcd0-e98c1641f4c3') def test_get_snapshot_metadata(self): # Create volume and snapshot metadata @@ -60,7 +60,7 @@ class SnapshotMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_tenant_attribute") + rules=["volume_extension:volume_tenant_attribute"]) @decorators.idempotent_id('e2c73b00-0c19-4bb7-8c61-d84b1a223ed1') def test_get_snapshot_metadata_for_volume_tenant(self): # Create volume and snapshot metadata @@ -72,7 +72,7 @@ class SnapshotMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('7ea597f6-c544-4b10-aab0-ff68f595fb06') @rbac_rule_validation.action(service="cinder", - rule="volume:update_snapshot_metadata") + rules=["volume:update_snapshot_metadata"]) def test_update_snapshot_metadata(self): self._create_test_snapshot_metadata() with self.rbac_utils.override_role(self): @@ -83,7 +83,7 @@ class SnapshotMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('93068d02-0131-4dd3-af16-fc40d7128d93') @rbac_rule_validation.action(service="cinder", - rule="volume:get_snapshot_metadata") + rules=["volume:get_snapshot_metadata"]) def test_show_snapshot_metadata_item(self): self._create_test_snapshot_metadata() with self.rbac_utils.override_role(self): @@ -92,7 +92,7 @@ class SnapshotMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('1f8f43e7-da31-4128-bb3c-73fc548650e3') @rbac_rule_validation.action(service="cinder", - rule="volume:update_snapshot_metadata") + rules=["volume:update_snapshot_metadata"]) def test_update_snapshot_metadata_item(self): update_item = {"key3": "value3_update"} self._create_test_snapshot_metadata() @@ -102,7 +102,7 @@ class SnapshotMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('3ec32516-f7cd-4f88-b78a-ddee67492071') @rbac_rule_validation.action(service="cinder", - rule="volume:delete_snapshot_metadata") + rules=["volume:delete_snapshot_metadata"]) def test_delete_snapshot_metadata_item(self): self._create_test_snapshot_metadata() with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/volume/test_user_messages_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_user_messages_rbac.py index 56ee1e02..962a9b13 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_user_messages_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_user_messages_rbac.py @@ -65,7 +65,7 @@ class MessagesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('bf7f31a1-509b-4a7d-a8a8-ad6ce68229c7') @rbac_rule_validation.action( service="cinder", - rule="message:get_all") + rules=["message:get_all"]) def test_list_messages(self): with self.rbac_utils.override_role(self): self.messages_client.list_messages()['messages'] @@ -73,7 +73,7 @@ class MessagesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('9cc1ad1e-68a2-4407-8b60-ea77909bce08') @rbac_rule_validation.action( service="cinder", - rule="message:get") + rules=["message:get"]) def test_show_message(self): message_id = self._create_user_message() @@ -83,7 +83,7 @@ class MessagesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('65ca7fb7-7f2c-443e-b144-ac86973a97be') @rbac_rule_validation.action( service="cinder", - rule="message:delete") + rules=["message:delete"]) def test_delete_message(self): message_id = self._create_user_message() diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_actions_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_actions_rbac.py index a4fc3fd6..2a5b9fe3 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volume_actions_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volume_actions_rbac.py @@ -76,7 +76,7 @@ class VolumesActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_actions:attach") + rules=["volume_extension:volume_actions:attach"]) @decorators.idempotent_id('f97b10e4-2eed-4f8b-8632-71c02cb9fe42') def test_attach_volume_to_instance(self): server = self._create_server() @@ -94,7 +94,7 @@ class VolumesActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_actions:detach") + rules=["volume_extension:volume_actions:detach"]) @decorators.idempotent_id('5a042f6a-688b-42e6-a02e-fe5c47b89b07') def test_detach_volume_from_instance(self): server = self._create_server() @@ -107,7 +107,7 @@ class VolumesActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): self.volumes_client, volume_id, 'available') @rbac_rule_validation.action(service="cinder", - rule="volume:update_readonly_flag") + rules=["volume:update_readonly_flag"]) @decorators.idempotent_id('2750717a-f250-4e41-9e09-02624aad6ff8') def test_volume_readonly_update(self): with self.rbac_utils.override_role(self): @@ -118,7 +118,7 @@ class VolumesActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('59b783c0-f4ef-430c-8a90-1bad97d4ec5c') @rbac_rule_validation.action(service="cinder", - rule="volume:update") + rules=["volume:update"]) def test_volume_set_bootable(self): with self.rbac_utils.override_role(self): self.volumes_client.set_bootable_volume(self.volume['id'], @@ -132,7 +132,7 @@ class VolumesActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('41566922-75a1-4484-99c7-9c8782ee99ac') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_actions:reserve") + rules=["volume_extension:volume_actions:reserve"]) def test_volume_reserve(self): with self.rbac_utils.override_role(self): self.volumes_client.reserve_volume(self.volume['id']) @@ -145,14 +145,14 @@ class VolumesActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('e5fa9564-77d9-4e57-b0c0-3e0ae4d08535') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_actions:unreserve") + rules=["volume_extension:volume_actions:unreserve"]) def test_volume_unreserve(self): with self.rbac_utils.override_role(self): self.volumes_client.unreserve_volume(self.volume['id']) @decorators.idempotent_id('c015c82f-7010-48cc-bd71-4ef542046f20') @rbac_rule_validation.action(service="cinder", - rule="volume:retype") + rules=["volume:retype"]) def test_volume_retype(self): vol_type = self.create_volume_type()['name'] volume = self.create_volume() @@ -164,7 +164,7 @@ class VolumesActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_admin_actions:reset_status") + rules=["volume_extension:volume_admin_actions:reset_status"]) @decorators.idempotent_id('4b3dad7d-0e73-4839-8781-796dd3d7af1d') def test_volume_reset_status(self): volume = self.create_volume() @@ -175,7 +175,7 @@ class VolumesActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_admin_actions:force_delete") + rules=["volume_extension:volume_admin_actions:force_delete"]) @decorators.idempotent_id('a312a937-6abf-4b91-a950-747086cbce48') def test_volume_force_delete(self): volume = self.create_volume() @@ -189,7 +189,7 @@ class VolumesActionsV3RbacTest(rbac_base.BaseVolumeRbacTest): @utils.services('compute') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_admin_actions:force_detach") + rules=["volume_extension:volume_admin_actions:force_detach"]) def test_force_detach_volume_from_instance(self): volume = self.create_volume() server = self._create_server() @@ -227,7 +227,7 @@ class VolumesActionsV310RbacTest(rbac_base.BaseVolumeRbacTest): @utils.services('image') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_actions:upload_image") + rules=["volume_extension:volume_actions:upload_image"]) @decorators.idempotent_id('b0d0da46-903c-4445-893e-20e680d68b50') def test_volume_upload_image(self): # TODO(felipemonteiro): The ``upload_volume`` endpoint also enforces @@ -251,7 +251,7 @@ class VolumesActionsV310RbacTest(rbac_base.BaseVolumeRbacTest): @utils.services('image') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_actions:upload_public") + rules=["volume_extension:volume_actions:upload_public"]) @decorators.idempotent_id('578a84dd-a6bd-4f97-a418-4a0c3c272c08') def test_volume_upload_public(self): # This also enforces "volume_extension:volume_actions:upload_image". @@ -277,7 +277,7 @@ class VolumesActionsV312RbacTest(rbac_base.BaseVolumeRbacTest): max_microversion = 'latest' @decorators.idempotent_id('a654833d-4811-4acd-93ef-5ac4a34c75bc') - @rbac_rule_validation.action(service="cinder", rule="volume:get_all") + @rbac_rule_validation.action(service="cinder", rules=["volume:get_all"]) def test_show_volume_summary(self): with self.rbac_utils.override_role(self): self.volumes_client.show_volume_summary() diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_basic_crud_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_basic_crud_rbac.py index a6ded521..2172fbb8 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volume_basic_crud_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volume_basic_crud_rbac.py @@ -32,7 +32,7 @@ class VolumesBasicCrudV3RbacTest(rbac_base.BaseVolumeRbacTest): cls.volume = cls.create_volume() @rbac_rule_validation.action(service="cinder", - rule="volume:create") + rules=["volume:create"]) @decorators.idempotent_id('426b08ef-6394-4d06-9128-965d5a6c38ef') def test_create_volume(self): name = data_utils.rand_name(self.__class__.__name__ + '-Volume') @@ -46,7 +46,7 @@ class VolumesBasicCrudV3RbacTest(rbac_base.BaseVolumeRbacTest): volume['id'], 'available') @rbac_rule_validation.action(service="cinder", - rule="volume:delete") + rules=["volume:delete"]) @decorators.idempotent_id('6de9f9c2-509f-4558-867b-af21c7163be4') def test_delete_volume(self): volume = self.create_volume() @@ -54,14 +54,14 @@ class VolumesBasicCrudV3RbacTest(rbac_base.BaseVolumeRbacTest): self.volumes_client.delete_volume(volume['id']) self.volumes_client.wait_for_resource_deletion(volume['id']) - @rbac_rule_validation.action(service="cinder", rule="volume:get") + @rbac_rule_validation.action(service="cinder", rules=["volume:get"]) @decorators.idempotent_id('c4c3fdd5-b1b1-49c3-b977-a9f40ee9257a') def test_show_volume(self): with self.rbac_utils.override_role(self): self.volumes_client.show_volume(self.volume['id']) @rbac_rule_validation.action(service="cinder", - rule="volume:get_all") + rules=["volume:get_all"]) @decorators.idempotent_id('e3ab7906-b04b-4c45-aa11-1104d302f940') def test_list_volumes(self): with self.rbac_utils.override_role(self): @@ -69,12 +69,12 @@ class VolumesBasicCrudV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('9b6d5beb-254f-4f1b-9906-0bdce4042f53') @rbac_rule_validation.action(service="cinder", - rule="volume:get_all") + rules=["volume:get_all"]) def test_list_volumes_with_details(self): with self.rbac_utils.override_role(self): self.volumes_client.list_volumes(detail=True) - @rbac_rule_validation.action(service="cinder", rule="volume:update") + @rbac_rule_validation.action(service="cinder", rules=["volume:update"]) @decorators.idempotent_id('b751b889-9a9b-40d8-ae7d-4b0f65e71ac7') def test_update_volume(self): update_name = data_utils.rand_name(self.__class__.__name__ + 'volume') diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_hosts_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_hosts_rbac.py index c21c40e0..8e2e2646 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volume_hosts_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volume_hosts_rbac.py @@ -22,7 +22,7 @@ from patrole_tempest_plugin.tests.api.volume import rbac_base class VolumeHostsV3RbacTest(rbac_base.BaseVolumeRbacTest): @rbac_rule_validation.action(service="cinder", - rule="volume_extension:hosts") + rules=["volume_extension:hosts"]) @decorators.idempotent_id('64e837f5-5452-4e26-b934-c721ea7a8644') def test_list_hosts(self): with self.rbac_utils.override_role(self): @@ -30,7 +30,7 @@ class VolumeHostsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('9ddf321e-788f-4787-b8cc-dfa59e264143') @rbac_rule_validation.action(service="cinder", - rule="volume_extension:hosts") + rules=["volume_extension:hosts"]) def test_show_host(self): hosts = self.volume_hosts_client.list_hosts()['hosts'] host_names = [host['host_name'] for host in hosts] diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_metadata_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_metadata_rbac.py index 8a501412..6c2c84da 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volume_metadata_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volume_metadata_rbac.py @@ -42,14 +42,14 @@ class VolumeMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): self.volume['id'], "key1") @rbac_rule_validation.action(service="cinder", - rule="volume:create_volume_metadata") + rules=["volume:create_volume_metadata"]) @decorators.idempotent_id('232bbb8b-4c29-44dc-9077-b1398c20b738') def test_create_volume_metadata(self): with self.rbac_utils.override_role(self): self._add_metadata(self.volume) @rbac_rule_validation.action(service="cinder", - rule="volume:get_volume_metadata") + rules=["volume:get_volume_metadata"]) @decorators.idempotent_id('87ea37d9-23ab-47b2-a59c-16fc4d2c6dfa') def test_show_volume_metadata(self): with self.rbac_utils.override_role(self): @@ -58,7 +58,7 @@ class VolumeMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('5c0f4c19-b448-4f51-9224-dad5faddc3bb') @rbac_rule_validation.action(service="cinder", - rule="volume:get_volume_metadata") + rules=["volume:get_volume_metadata"]) def test_show_volume_metadata_item(self): self._add_metadata(self.volume) @@ -67,7 +67,7 @@ class VolumeMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): self.volume['id'], "key1") @rbac_rule_validation.action(service="cinder", - rule="volume:delete_volume_metadata") + rules=["volume:delete_volume_metadata"]) @decorators.idempotent_id('7498dfc1-9db2-4423-ad20-e6dcb25d1beb') def test_delete_volume_metadata_item(self): self._add_metadata(self.volume) @@ -77,7 +77,7 @@ class VolumeMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): "key1") @rbac_rule_validation.action(service="cinder", - rule="volume:update_volume_metadata") + rules=["volume:update_volume_metadata"]) @decorators.idempotent_id('8ce2ff80-99ba-49ae-9bb1-7e96729ee5af') def test_update_volume_metadata_item(self): self._add_metadata(self.volume) @@ -88,7 +88,7 @@ class VolumeMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('a231b445-97a5-4657-b05f-245895e88da9') @rbac_rule_validation.action(service="cinder", - rule="volume:update_volume_metadata") + rules=["volume:update_volume_metadata"]) def test_update_volume_metadata(self): self._add_metadata(self.volume) updated_metadata = {"key1": "value1"} @@ -99,7 +99,7 @@ class VolumeMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('39e8f82c-f1fc-4905-bf47-177ce2f71bb9') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_image_metadata") + rules=["volume_extension:volume_image_metadata"]) def test_list_volumes_details_image_metadata(self): self.volumes_client.update_volume_image_metadata( self.volume['id'], image_id=self.image_id) @@ -117,7 +117,7 @@ class VolumeMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('53f94d52-0dd5-42cf-a3a4-59b35150b3d5') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_image_metadata") + rules=["volume_extension:volume_image_metadata"]) def test_show_volume_details_image_metadata(self): self.volumes_client.update_volume_image_metadata( self.volume['id'], image_id=self.image_id) @@ -135,7 +135,7 @@ class VolumeMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('a9d9e825-5ea3-42e6-96f3-7ac4e97b2ed0') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_image_metadata") + rules=["volume_extension:volume_image_metadata"]) def test_update_volume_image_metadata(self): with self.rbac_utils.override_role(self): self.volumes_client.update_volume_image_metadata( @@ -146,7 +146,7 @@ class VolumeMetadataV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('a41c8eed-2051-4a25-b401-df036faacbdc') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_image_metadata") + rules=["volume_extension:volume_image_metadata"]) def test_delete_volume_image_metadata(self): self.volumes_client.update_volume_image_metadata( self.volume['id'], image_id=self.image_id) diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_quotas_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_quotas_rbac.py index 32cc48c4..cd1fb6e0 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volume_quotas_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volume_quotas_rbac.py @@ -45,21 +45,21 @@ class VolumeQuotasV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('427c9f0c-982e-403d-ae45-c05f4d6322ff') @rbac_rule_validation.action(service="cinder", - rule="volume_extension:quotas:show") + rules=["volume_extension:quotas:show"]) def test_list_quotas(self): with self.rbac_utils.override_role(self): self.quotas_client.show_quota_set(self.demo_tenant_id) @decorators.idempotent_id('e47cf444-2753-4983-be6d-fc0d6523720f') @rbac_rule_validation.action(service="cinder", - rule="volume_extension:quotas:show") + rules=["volume_extension:quotas:show"]) def test_list_quotas_usage_true(self): with self.rbac_utils.override_role(self): self.quotas_client.show_quota_set(self.demo_tenant_id, params={'usage': True}) @rbac_rule_validation.action(service="cinder", - rule="volume_extension:quotas:show") + rules=["volume_extension:quotas:show"]) @decorators.idempotent_id('b3c7177e-b6b1-4d0f-810a-fc95606964dd') def test_list_default_quotas(self): with self.rbac_utils.override_role(self): @@ -67,7 +67,7 @@ class VolumeQuotasV3RbacTest(rbac_base.BaseVolumeRbacTest): self.demo_tenant_id) @rbac_rule_validation.action(service="cinder", - rule="volume_extension:quotas:update") + rules=["volume_extension:quotas:update"]) @decorators.idempotent_id('60f8f421-1630-4953-b449-b22af32265c7') def test_update_quota_set(self): self._restore_default_quota_set() @@ -81,7 +81,7 @@ class VolumeQuotasV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('329bdb88-5132-4810-b1fc-350d181577e3') @rbac_rule_validation.action(service="cinder", - rule="volume_extension:quotas:delete") + rules=["volume_extension:quotas:delete"]) def test_delete_quota_set(self): self._restore_default_quota_set() diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_services_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_services_rbac.py index 1711c88f..9f97a826 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volume_services_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volume_services_rbac.py @@ -41,7 +41,7 @@ class VolumeServicesV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('b9134f01-97c0-4abd-9455-fe2f03e3f966') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:services:index") + rules=["volume_extension:services:index"]) def test_list_services(self): with self.rbac_utils.override_role(self): self.services_client.list_services()['services'] diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_transfers_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_transfers_rbac.py index ad0d031d..a18a3701 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volume_transfers_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volume_transfers_rbac.py @@ -49,14 +49,14 @@ class VolumesTransfersV3RbacTest(rbac_base.BaseVolumeRbacTest): return transfer @rbac_rule_validation.action(service="cinder", - rule="volume:create_transfer") + rules=["volume:create_transfer"]) @decorators.idempotent_id('25413af4-468d-48ff-94ca-4436f8526b3e') def test_create_volume_transfer(self): with self.rbac_utils.override_role(self): self._create_transfer() @rbac_rule_validation.action(service="cinder", - rule="volume:get_transfer") + rules=["volume:get_transfer"]) @decorators.idempotent_id('7a0925d3-ed97-4c25-8299-e5cdabe2eb55') def test_get_volume_transfer(self): transfer = self._create_transfer() @@ -64,7 +64,7 @@ class VolumesTransfersV3RbacTest(rbac_base.BaseVolumeRbacTest): self.transfers_client.show_volume_transfer(transfer['id']) @rbac_rule_validation.action(service="cinder", - rule="volume:get_all_transfers") + rules=["volume:get_all_transfers"]) @decorators.idempotent_id('02a06f2b-5040-49e2-b2b7-619a7db59603') def test_list_volume_transfers(self): with self.rbac_utils.override_role(self): @@ -72,13 +72,13 @@ class VolumesTransfersV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('e84e45b0-9872-40bf-bf44-971266161a86') @rbac_rule_validation.action(service="cinder", - rule="volume:get_all_transfers") + rules=["volume:get_all_transfers"]) def test_list_volume_transfers_details(self): with self.rbac_utils.override_role(self): self.transfers_client.list_volume_transfers(detail=True) @rbac_rule_validation.action(service="cinder", - rule="volume:accept_transfer") + rules=["volume:accept_transfer"]) @decorators.idempotent_id('987f2a11-d657-4984-a6c9-28f06c1cd014') def test_accept_volume_transfer(self): transfer = self._create_transfer() @@ -87,7 +87,7 @@ class VolumesTransfersV3RbacTest(rbac_base.BaseVolumeRbacTest): transfer['id'], auth_key=transfer['auth_key']) @rbac_rule_validation.action(service="cinder", - rule="volume:delete_transfer") + rules=["volume:delete_transfer"]) @decorators.idempotent_id('4672187e-7fff-454b-832a-5c8865dda868') def test_delete_volume_transfer(self): transfer = self._create_transfer() diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_types_access_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_types_access_rbac.py index 89dc0a2e..3aed54d8 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volume_types_access_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volume_types_access_rbac.py @@ -52,7 +52,7 @@ class VolumeTypesAccessRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('af70e6ad-e931-419f-9200-8bcc284e4e47') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_type_access") + rules=["volume_extension:volume_type_access"]) def test_list_type_access(self): self._add_type_access() @@ -63,7 +63,7 @@ class VolumeTypesAccessRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('b462eeba-45d0-4d6e-945a-a1d27708d367') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_type_access:addProjectAccess") + rules=["volume_extension:volume_type_access:addProjectAccess"]) def test_add_type_access(self): with self.rbac_utils.override_role(self): self._add_type_access(ignore_not_found=True) @@ -71,7 +71,7 @@ class VolumeTypesAccessRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('8f848aeb-636a-46f1-aeeb-e2a60e9d2bfe') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_type_access:removeProjectAccess") + rules=["volume_extension:volume_type_access:removeProjectAccess"]) def test_remove_type_access(self): self._add_type_access(ignore_not_found=True) diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_types_extra_specs_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_types_extra_specs_rbac.py index 8d4c2651..b610ddea 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volume_types_extra_specs_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volume_types_extra_specs_rbac.py @@ -55,7 +55,7 @@ class VolumeTypesExtraSpecsRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('76c36be2-2b6c-4acf-9aac-c9dc5c17cdbe') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:types_extra_specs:index") + rules=["volume_extension:types_extra_specs:index"]) def test_list_volume_types_extra_specs(self): with self.rbac_utils.override_role(self): self.volume_types_client.list_volume_types_extra_specs( @@ -63,7 +63,7 @@ class VolumeTypesExtraSpecsRbacTest(rbac_base.BaseVolumeRbacTest): @rbac_rule_validation.action( service="cinder", - rule="volume_extension:types_extra_specs:create") + rules=["volume_extension:types_extra_specs:create"]) @decorators.idempotent_id('eea40251-990b-49b0-99ae-10e4585b479b') def test_create_volume_type_extra_specs(self): with self.rbac_utils.override_role(self): @@ -72,7 +72,7 @@ class VolumeTypesExtraSpecsRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('e2dcc9c6-2fef-431d-afaf-92b45bc76d1a') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:types_extra_specs:show") + rules=["volume_extension:types_extra_specs:show"]) def test_show_volume_type_extra_specs(self): self._create_volume_type_extra_specs() @@ -83,7 +83,7 @@ class VolumeTypesExtraSpecsRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('93001912-f938-41c7-8787-62dc7010fd52') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:types_extra_specs:delete") + rules=["volume_extension:types_extra_specs:delete"]) def test_delete_volume_type_extra_specs(self): self._create_volume_type_extra_specs(ignore_not_found=True) @@ -94,7 +94,7 @@ class VolumeTypesExtraSpecsRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('0a444437-7402-4fbe-a18a-93af2ee00618') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:types_extra_specs:update") + rules=["volume_extension:types_extra_specs:update"]) def test_update_volume_type_extra_specs(self): self._create_volume_type_extra_specs() update_extra_specs = {self.spec_key: "val2"} diff --git a/patrole_tempest_plugin/tests/api/volume/test_volume_types_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volume_types_rbac.py index a37661e0..a5bec1ff 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volume_types_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volume_types_rbac.py @@ -24,7 +24,7 @@ class VolumeTypesRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('e2bbf968-d947-4a15-a4da-a98c3069731e') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:types_manage") + rules=["volume_extension:types_manage"]) def test_create_volume_type(self): with self.rbac_utils.override_role(self): self.create_volume_type() @@ -32,7 +32,7 @@ class VolumeTypesRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('2b74ac82-e03e-4801-86f3-d05c9acfd66b') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:types_manage") + rules=["volume_extension:types_manage"]) def test_update_volume_type(self): volume_type = self.create_volume_type() with self.rbac_utils.override_role(self): @@ -42,7 +42,7 @@ class VolumeTypesRbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('90aec0ef-4f9b-4170-be6b-a392c12540be') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:types_manage") + rules=["volume_extension:types_manage"]) def test_delete_volume_type(self): volume_type = self.create_volume_type() with self.rbac_utils.override_role(self): diff --git a/patrole_tempest_plugin/tests/api/volume/test_volumes_backup_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volumes_backup_rbac.py index 1e0a17dc..bf22341d 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volumes_backup_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volumes_backup_rbac.py @@ -57,7 +57,7 @@ class VolumesBackupsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action(service="cinder", - rule="backup:create") + rules=["backup:create"]) @decorators.idempotent_id('6887ec94-0bcf-4ab7-b30f-3808a4b5a2a5') def test_create_backup(self): backup_name = data_utils.rand_name(self.__class__.__name__ + '-Backup') @@ -73,14 +73,14 @@ class VolumesBackupsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action(service="cinder", - rule="backup:get") + rules=["backup:get"]) @decorators.idempotent_id('abd92bdd-b0fb-4dc4-9cfc-de9e968f8c8a') def test_show_backup(self): with self.rbac_utils.override_role(self): self.backups_client.show_backup(self.backup['id']) @rbac_rule_validation.action(service="cinder", - rule="backup:get_all") + rules=["backup:get_all"]) @decorators.idempotent_id('4d18f0f0-7e01-4007-b622-dedc859b22f6') def test_list_backups(self): with self.rbac_utils.override_role(self): @@ -88,7 +88,7 @@ class VolumesBackupsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('dbd69865-876f-4835-b70e-7341153fb162') @rbac_rule_validation.action(service="cinder", - rule="backup:get_all") + rules=["backup:get_all"]) def test_list_backups_with_details(self): with self.rbac_utils.override_role(self): self.backups_client.list_backups(detail=True) @@ -97,7 +97,7 @@ class VolumesBackupsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('50f43bde-205e-438e-9a05-5eac07fc3d63') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:backup_admin_actions:reset_status") + rules=["volume_extension:backup_admin_actions:reset_status"]) def test_reset_backup_status(self): # Use instance-level create_backup for easier debugging. backup = self.create_backup(volume_id=self.volume['id']) @@ -112,7 +112,7 @@ class VolumesBackupsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action(service="cinder", - rule="backup:restore") + rules=["backup:restore"]) @decorators.idempotent_id('9c794bf9-2446-4f41-8fe0-80b71e757f9d') def test_restore_backup(self): with self.rbac_utils.override_role(self): @@ -125,7 +125,7 @@ class VolumesBackupsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action(service="cinder", - rule="backup:delete") + rules=["backup:delete"]) @decorators.idempotent_id('d5d0c6a2-413d-437e-a73f-4bf2b41a20ed') def test_delete_backup(self): # Do not call the create_backup in Tempest's base volume class, because @@ -147,7 +147,7 @@ class VolumesBackupsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action(service="cinder", - rule="backup:export-import") + rules=["backup:export-import"]) @decorators.idempotent_id('e984ec8d-e8eb-485c-98bc-f1856020303c') def test_export_backup(self): with self.rbac_utils.override_role(self): @@ -156,7 +156,7 @@ class VolumesBackupsV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.attr(type='slow') @rbac_rule_validation.action(service="cinder", - rule="backup:backup-import") + rules=["backup:backup-import"]) @decorators.idempotent_id('1e70f039-4556-44cc-9cc1-edf2b7ed648b') def test_import_backup(self): export_backup = self.backups_client.export_backup( @@ -202,7 +202,7 @@ class VolumesBackupsV318RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('69801485-d5be-4e75-bbb4-168d50b5a8c2') @rbac_rule_validation.action(service="cinder", - rule="backup:backup_project_attribute") + rules=["backup:backup_project_attribute"]) def test_show_backup_project_attribute(self): with self.rbac_utils.override_role(self): body = self.backups_client.show_backup(self.backup['id'])['backup'] @@ -215,7 +215,7 @@ class VolumesBackupsV318RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('aa40b7c0-5974-48be-8cbc-e23cc61c4c68') @rbac_rule_validation.action(service="cinder", - rule="backup:backup_project_attribute") + rules=["backup:backup_project_attribute"]) def test_list_backup_details_project_attribute(self): with self.rbac_utils.override_role(self): body = self.backups_client.list_backups(detail=True)['backups'] @@ -246,7 +246,7 @@ class VolumesBackupsV39RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('b45b0e98-6eb8-4c62-aa53-0f8c7c09faa6') @rbac_rule_validation.action( service="cinder", - rule="backup:update") + rules=["backup:update"]) def test_backup_update(self): update_kwargs = { 'name': data_utils.rand_name(self.__class__.__name__ + '-Backup'), diff --git a/patrole_tempest_plugin/tests/api/volume/test_volumes_extend_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volumes_extend_rbac.py index 18883c9a..ec6cf668 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volumes_extend_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volumes_extend_rbac.py @@ -28,7 +28,7 @@ class VolumesExtendV3RbacTest(rbac_base.BaseVolumeRbacTest): # Create a test shared volume for tests cls.volume = cls.create_volume() - @rbac_rule_validation.action(service="cinder", rule="volume:extend") + @rbac_rule_validation.action(service="cinder", rules=["volume:extend"]) @decorators.idempotent_id('1627b065-4081-4e14-8340-8e4fb02ceaf2') def test_volume_extend(self): # Extend volume test diff --git a/patrole_tempest_plugin/tests/api/volume/test_volumes_manage_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volumes_manage_rbac.py index 852d81e8..2782e220 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volumes_manage_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volumes_manage_rbac.py @@ -66,7 +66,7 @@ class VolumesManageV3RbacTest(rbac_base.BaseVolumeRbacTest): @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_manage") + rules=["volume_extension:volume_manage"]) @decorators.idempotent_id('114f9708-939b-407e-aeac-d21ebfabaad3') def test_volume_manage(self): volume_id = self.create_volume()['id'] @@ -108,7 +108,7 @@ class VolumesManageV3RbacTest(rbac_base.BaseVolumeRbacTest): @rbac_rule_validation.action( service="cinder", - rule="volume_extension:volume_unmanage") + rules=["volume_extension:volume_unmanage"]) @decorators.idempotent_id('d5d72abe-60bc-45ac-a8f2-c21b24f0b5d6') def test_volume_unmanage(self): volume_id = self.create_volume()['id'] diff --git a/patrole_tempest_plugin/tests/api/volume/test_volumes_snapshots_rbac.py b/patrole_tempest_plugin/tests/api/volume/test_volumes_snapshots_rbac.py index 7d721c47..40469a24 100644 --- a/patrole_tempest_plugin/tests/api/volume/test_volumes_snapshots_rbac.py +++ b/patrole_tempest_plugin/tests/api/volume/test_volumes_snapshots_rbac.py @@ -46,7 +46,7 @@ class VolumesSnapshotV3RbacTest(rbac_base.BaseVolumeRbacTest): detail=with_detail, **params)['snapshots'] @rbac_rule_validation.action(service="cinder", - rule="volume:create_snapshot") + rules=["volume:create_snapshot"]) @decorators.idempotent_id('ac7b2ee5-fbc0-4360-afc2-de8fa4881ede') def test_create_snapshot(self): # Create a temp snapshot @@ -54,7 +54,7 @@ class VolumesSnapshotV3RbacTest(rbac_base.BaseVolumeRbacTest): self.create_snapshot(self.volume['id']) @rbac_rule_validation.action(service="cinder", - rule="volume:get_snapshot") + rules=["volume:get_snapshot"]) @decorators.idempotent_id('93a11b40-1ba8-44d6-a196-f8d97220f796') def test_show_snapshot(self): # Get the snapshot @@ -65,7 +65,7 @@ class VolumesSnapshotV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('5d6f5f21-9293-4f2a-8f44-cabdc24d92cb') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:extended_snapshot_attributes") + rules=["volume_extension:extended_snapshot_attributes"]) def test_show_snapshot_with_extended_attributes(self): """List snapshots with extended attributes.""" expected_attrs = ('os-extended-snapshot-attributes:project_id', @@ -80,7 +80,7 @@ class VolumesSnapshotV3RbacTest(rbac_base.BaseVolumeRbacTest): attribute=expected_attr) @rbac_rule_validation.action(service="cinder", - rule="volume:update_snapshot") + rules=["volume:update_snapshot"]) @decorators.idempotent_id('53fe8ee3-3bea-4ae8-a979-3c98ea72f620') def test_update_snapshot(self): new_desc = 'This is the new description of snapshot.' @@ -93,7 +93,7 @@ class VolumesSnapshotV3RbacTest(rbac_base.BaseVolumeRbacTest): self.snapshots_client, self.snapshot['id'], 'available') @rbac_rule_validation.action(service="cinder", - rule="volume:delete_snapshot") + rules=["volume:delete_snapshot"]) @decorators.idempotent_id('c7fe54ec-3b70-4772-ba11-f166d95888a3') def test_delete_snapshot(self): # Create a temp snapshot @@ -105,7 +105,7 @@ class VolumesSnapshotV3RbacTest(rbac_base.BaseVolumeRbacTest): temp_snapshot['id']) @rbac_rule_validation.action(service="cinder", - rule="volume:get_all_snapshots") + rules=["volume:get_all_snapshots"]) @decorators.idempotent_id('e4edf0c0-2cd3-420f-b8ab-4d98a0718608') def test_list_snapshots(self): """List snapshots with params.""" @@ -115,7 +115,7 @@ class VolumesSnapshotV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('f3155d8e-45ee-45c9-910d-18c0242229e1') @rbac_rule_validation.action(service="cinder", - rule="volume:get_all_snapshots") + rules=["volume:get_all_snapshots"]) def test_list_snapshots_details(self): """List snapshots details with params.""" params = {'name': self.snapshot['name']} @@ -125,7 +125,7 @@ class VolumesSnapshotV3RbacTest(rbac_base.BaseVolumeRbacTest): @decorators.idempotent_id('dd37f388-2731-446d-a78f-676997ebb04a') @rbac_rule_validation.action( service="cinder", - rule="volume_extension:extended_snapshot_attributes") + rules=["volume_extension:extended_snapshot_attributes"]) def test_list_snapshots_details_with_extended_attributes(self): """List snapshots details with extended attributes.""" expected_attrs = ('os-extended-snapshot-attributes:project_id', diff --git a/patrole_tempest_plugin/tests/unit/test_rbac_rule_validation.py b/patrole_tempest_plugin/tests/unit/test_rbac_rule_validation.py index 17720473..4115aedb 100644 --- a/patrole_tempest_plugin/tests/unit/test_rbac_rule_validation.py +++ b/patrole_tempest_plugin/tests/unit/test_rbac_rule_validation.py @@ -221,7 +221,7 @@ class RBACRuleValidationTest(BaseRBACRuleValidationTest): exception. """ @rbac_rv.action(mock.sentinel.service, rules=[mock.sentinel.action], - expected_error_code=404) + expected_error_codes=[404]) def test_policy(*args): raise exceptions.Forbidden('Test message') @@ -251,7 +251,7 @@ class RBACRuleValidationTest(BaseRBACRuleValidationTest): policy_names = ['foo:bar'] @rbac_rv.action(mock.sentinel.service, rules=policy_names, - expected_error_code=404) + expected_error_codes=[404]) def test_policy(*args): raise exceptions.NotFound() @@ -304,7 +304,7 @@ class RBACRuleValidationTest(BaseRBACRuleValidationTest): pass @rbac_rv.action(mock.sentinel.service, rules=[mock.sentinel.action], - expected_error_code=404) + expected_error_codes=[404]) def test_policy_expect_not_found(*args): pass @@ -455,7 +455,7 @@ class RBACRuleValidationLoggingTest(BaseRBACRuleValidationTest): mock_authority.PolicyAuthority.return_value.allowed.return_value = True @rbac_rv.action(mock.sentinel.service, - rule=lambda: mock.sentinel.action) + rules=[lambda: mock.sentinel.action]) def test_policy(*args): pass @@ -483,12 +483,12 @@ class RBACRuleValidationLoggingTest(BaseRBACRuleValidationTest): bar_callable = functools.partial(partial_func, "baz") @rbac_rv.action(mock.sentinel.service, - rule=foo_callable) + rules=[foo_callable]) def test_foo_policy(*args): pass @rbac_rv.action(mock.sentinel.service, - rule=bar_callable) + rules=[bar_callable]) def test_bar_policy(*args): pass @@ -731,31 +731,24 @@ class RBACRuleValidationTestMultiPolicy(BaseRBACRuleValidationTest): _do_test([True, False, False, True], 'mock.sentinel.action2') _do_test([True, False, True, False], 'mock.sentinel.action2') - @mock.patch.object(rbac_rv, 'LOG', autospec=True) - def test_prepare_multi_policy_allowed_usages(self, mock_log): + def test_prepare_multi_policy_allowed_usages(self): - def _do_test(rule, rules, ecode, ecodes, exp_rules, exp_ecodes): - rule_list, ec_list = rbac_rv._prepare_multi_policy(rule, rules, - ecode, ecodes) + def _do_test(rules, ecodes, exp_rules, exp_ecodes): + rule_list, ec_list = rbac_rv._prepare_multi_policy(rules, ecodes) self.assertEqual(rule_list, exp_rules) self.assertEqual(ec_list, exp_ecodes) - # Validate that using deprecated values: rule and expected_error_code - # are converted into rules = [rule] and expected_error_codes = - # [expected_error_code] - _do_test("rule1", None, 403, None, ["rule1"], [403]) - - # Validate that rules = [rule] and expected_error_codes defaults to - # 403 when no values are provided. - _do_test("rule1", None, None, None, ["rule1"], [403]) + # Validate that expected_error_codes defaults to 403 when no values + # are provided. + _do_test(["rule1"], None, ["rule1"], [403]) # Validate that `len(rules) == len(expected_error_codes)` works when # both == 1. - _do_test(None, ["rule1"], None, [403], ["rule1"], [403]) + _do_test(["rule1"], [403], ["rule1"], [403]) # Validate that `len(rules) == len(expected_error_codes)` works when # both are > 1. - _do_test(None, ["rule1", "rule2"], None, [403, 404], + _do_test(["rule1", "rule2"], [403, 404], ["rule1", "rule2"], [403, 404]) # Validate that when only a default expected_error_code argument is @@ -765,39 +758,27 @@ class RBACRuleValidationTestMultiPolicy(BaseRBACRuleValidationTest): # @rbac_rv.action(service, rules=[, ]) # def test_policy(*args): # ... - _do_test(None, ["rule1", "rule2"], 403, None, + _do_test(["rule1", "rule2"], None, ["rule1", "rule2"], [403, 403]) - # Validate that the deprecated values are ignored when new values are - # provided. - _do_test("rule3", ["rule1", "rule2"], 404, [403, 403], - ["rule1", "rule2"], [403, 403]) - mock_log.debug.assert_any_call( - "The `rules` argument will be used instead of `rule`.") - mock_log.debug.assert_any_call( - "The `exp_error_codes` argument will be used instead of " - "`exp_error_code`.") - @mock.patch.object(rbac_rv, 'LOG', autospec=True) def test_prepare_multi_policy_disallowed_usages(self, mock_log): - def _do_test(rule, rules, ecode, ecodes): - rule_list, ec_list = rbac_rv._prepare_multi_policy(rule, rules, - ecode, ecodes) + def _do_test(rules, ecodes): + rule_list, ec_list = rbac_rv._prepare_multi_policy(rules, ecodes) error_re = ("The `expected_error_codes` list is not the same length" " as the `rules` list.") # When len(rules) > 1 then len(expected_error_codes) must be same len. self.assertRaisesRegex(ValueError, error_re, _do_test, - None, ["rule1", "rule2"], None, [403]) + ["rule1", "rule2"], [403]) # When len(expected_error_codes) > 1 len(rules) must be same len. - self.assertRaisesRegex(ValueError, error_re, _do_test, - None, ["rule1"], None, [403, 404]) + self.assertRaisesRegex(ValueError, error_re, _do_test, ["rule1"], + [403, 404]) error_re = ("The `rules` list must be provided if using the " "`expected_error_codes` list.") # When expected_error_codes is provided rules must be as well. - self.assertRaisesRegex(ValueError, error_re, _do_test, - None, None, None, [404]) + self.assertRaisesRegex(ValueError, error_re, _do_test, None, [404]) class RBACOverrideRoleValidationTest(BaseRBACRuleValidationTest): diff --git a/releasenotes/notes/remove-deprecated-rules-expected-error-codes-params-52071a83113934fd.yaml b/releasenotes/notes/remove-deprecated-rules-expected-error-codes-params-52071a83113934fd.yaml new file mode 100644 index 00000000..16b2e031 --- /dev/null +++ b/releasenotes/notes/remove-deprecated-rules-expected-error-codes-params-52071a83113934fd.yaml @@ -0,0 +1,13 @@ +--- +upgrade: + - | + The following deprecated parameters in ``rbac_rule_validation.action`` + decorator: + + * ``rule`` + * ``expected_error_code`` + + have been removed. Use the non-deprecated versions instead: + + * ``rules`` + * ``expected_error_codes``