Merge "Remove enforce_type=True from oslo.config set_override"
diff --git a/patrole_tempest_plugin/plugin.py b/patrole_tempest_plugin/plugin.py
index 3abf4aa..cfe5c0a 100644
--- a/patrole_tempest_plugin/plugin.py
+++ b/patrole_tempest_plugin/plugin.py
@@ -25,7 +25,7 @@
def load_tests(self):
base_path = os.path.split(os.path.dirname(
os.path.abspath(__file__)))[0]
- test_dir = "patrole_tempest_plugin/tests"
+ test_dir = "patrole_tempest_plugin/tests/api"
full_test_dir = os.path.join(base_path, test_dir)
return full_test_dir, base_path
diff --git a/patrole_tempest_plugin/tests/api/compute/rbac_base.py b/patrole_tempest_plugin/tests/api/compute/rbac_base.py
index bc02dbf..457d08d 100644
--- a/patrole_tempest_plugin/tests/api/compute/rbac_base.py
+++ b/patrole_tempest_plugin/tests/api/compute/rbac_base.py
@@ -58,7 +58,7 @@
@classmethod
def _create_flavor(cls, **kwargs):
flavor_kwargs = {
- "name": data_utils.rand_name('flavor'),
+ "name": data_utils.rand_name(cls.__name__ + '-flavor'),
"ram": data_utils.rand_int_id(1, 10),
"vcpus": data_utils.rand_int_id(1, 10),
"disk": data_utils.rand_int_id(1, 10),
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 db504c0..eec4030 100644
--- a/patrole_tempest_plugin/tests/api/compute/test_aggregates_rbac.py
+++ b/patrole_tempest_plugin/tests/api/compute/test_aggregates_rbac.py
@@ -37,7 +37,7 @@
cls.hosts_client = cls.os_primary.hosts_client
def _create_aggregate(self):
- agg_name = data_utils.rand_name('aggregate')
+ agg_name = data_utils.rand_name(self.__class__.__name__ + '-aggregate')
aggregate = self.aggregates_client.create_aggregate(name=agg_name)
aggregate_id = aggregate['aggregate']['id']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -82,7 +82,7 @@
def test_update_aggregate_rbac(self):
aggregate_id = self._create_aggregate()
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- new_name = data_utils.rand_name('aggregate')
+ new_name = data_utils.rand_name(self.__class__.__name__ + '-aggregate')
self.aggregates_client.update_aggregate(aggregate_id, name=new_name)
@rbac_rule_validation.action(
@@ -115,8 +115,8 @@
@decorators.idempotent_id('ed6f3849-065c-4ae9-a81e-6ad7ed0d3d9d')
def test_set_metadata_on_aggregate_rbac(self):
aggregate_id = self._create_aggregate()
- rand_key = data_utils.rand_name('key')
- rand_val = data_utils.rand_name('val')
+ rand_key = data_utils.rand_name(self.__class__.__name__ + '-key')
+ rand_val = data_utils.rand_name(self.__class__.__name__ + '-val')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.aggregates_client.set_metadata(
aggregate_id,
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 0ee8d9a..10e27a8 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
@@ -48,8 +48,8 @@
super(FlavorExtraSpecsRbacTest, cls).resource_cleanup()
def _set_flavor_extra_spec(self):
- rand_key = data_utils.rand_name('key')
- rand_val = data_utils.rand_name('val')
+ rand_key = data_utils.rand_name(self.__class__.__name__ + '-key')
+ rand_val = data_utils.rand_name(self.__class__.__name__ + '-val')
specs = {rand_key: rand_val}
self.client.set_flavor_extra_spec(self.flavor['id'],
**specs)['extra_specs']
@@ -82,7 +82,7 @@
def test_update_flavor_extra_spec(self):
key = self._set_flavor_extra_spec()
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- update_val = data_utils.rand_name('val')
+ update_val = data_utils.rand_name(self.__class__.__name__ + '-val')
self.client.update_flavor_extra_spec(self.flavor['id'], key,
**{key: update_val})[key]
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 b848509..d546911 100644
--- a/patrole_tempest_plugin/tests/api/compute/test_images_rbac.py
+++ b/patrole_tempest_plugin/tests/api/compute/test_images_rbac.py
@@ -54,7 +54,7 @@
def resource_setup(cls):
super(ImagesV235RbacTest, cls).resource_setup()
cls.image = cls.glance_image_client.create_image(
- name=data_utils.rand_name('image'))
+ name=data_utils.rand_name(cls.__name__ + '-image'))
@classmethod
def resource_cleanup(cls):
@@ -111,7 +111,7 @@
rule="delete_image")
def test_delete_image(self):
image = self.glance_image_client.create_image(
- name=data_utils.rand_name('image'))
+ name=data_utils.rand_name(self.__class__.__name__ + '-image'))
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.glance_image_client.delete_image, image['id'])
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 f7b2ace..a93d807 100644
--- a/patrole_tempest_plugin/tests/api/compute/test_keypairs_rbac.py
+++ b/patrole_tempest_plugin/tests/api/compute/test_keypairs_rbac.py
@@ -29,7 +29,7 @@
cls.client = cls.keypairs_client
def _create_keypair(self):
- key_name = data_utils.rand_name('key')
+ key_name = data_utils.rand_name(self.__class__.__name__ + '-key')
keypair = self.client.create_keypair(name=key_name)
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
self.client.delete_keypair,
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 f6706a7..8e90880 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
@@ -88,7 +88,8 @@
service="nova",
rule="os_compute_api:os-quota-sets:delete")
def test_delete_quota_set(self):
- project_name = data_utils.rand_name('project')
+ project_name = data_utils.rand_name(
+ self.__class__.__name__ + '-project')
project = self.projects_client.create_project(name=project_name)
project_id = project['project']['id']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
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 b71887c..7d715ca 100644
--- a/patrole_tempest_plugin/tests/api/compute/test_server_rbac.py
+++ b/patrole_tempest_plugin/tests/api/compute/test_server_rbac.py
@@ -174,7 +174,7 @@
@decorators.idempotent_id('077b17cb-5621-43b9-8adf-5725f0d7a863')
def test_update_server(self):
server = self.create_test_server(wait_until='ACTIVE')
- new_name = data_utils.rand_name('server')
+ new_name = data_utils.rand_name(self.__class__.__name__ + '-server')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
try:
self.client.update_server(server['id'], name=new_name)
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 4de63ce..19aa36a 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
@@ -44,7 +44,7 @@
cls.server = cls.create_test_server(wait_until='ACTIVE')
def _add_tag_to_server(self):
- tag_name = data_utils.rand_name('tag')
+ tag_name = data_utils.rand_name(self.__class__.__name__ + '-tag')
self.client.update_tag(self.server['id'], tag_name)
self.addCleanup(self.client.delete_all_tags, self.server['id'])
return tag_name
@@ -89,7 +89,7 @@
rule="os_compute_api:os-server-tags:update_all")
def test_update_all_tags(self):
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- new_tag_name = data_utils.rand_name('tag')
+ new_tag_name = data_utils.rand_name(self.__class__.__name__ + '-tag')
self.client.update_all_tags(self.server['id'], [new_tag_name])['tags']
@decorators.idempotent_id('89d51936-e333-42f9-a045-132a4865ba1a')
diff --git a/patrole_tempest_plugin/tests/api/identity/rbac_base.py b/patrole_tempest_plugin/tests/api/identity/rbac_base.py
index b37477e..8fef487 100644
--- a/patrole_tempest_plugin/tests/api/identity/rbac_base.py
+++ b/patrole_tempest_plugin/tests/api/identity/rbac_base.py
@@ -12,6 +12,7 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
+
from oslo_log import log as logging
from tempest.api.identity import base
@@ -77,7 +78,8 @@
"""Creates a service and an endpoint for test."""
interface = 'public'
url = data_utils.rand_url()
- region_name = data_utils.rand_name('region')
+ region_name = data_utils.rand_name(
+ cls.__name__ + '-region')
# Endpoint creation requires a service
if service is None:
service = cls.setup_test_service()
@@ -103,7 +105,7 @@
@classmethod
def setup_test_role(cls):
"""Set up a test role."""
- name = data_utils.rand_name('test_role')
+ name = data_utils.rand_name(cls.__name__ + '-test_role')
role = cls.roles_client.create_role(name=name)['role']
cls.roles.append(role)
@@ -112,9 +114,9 @@
@classmethod
def setup_test_service(cls):
"""Setup a test service."""
- name = data_utils.rand_name('service')
+ name = data_utils.rand_name(cls.__name__ + '-service')
serv_type = data_utils.rand_name('type')
- desc = data_utils.rand_name('description')
+ desc = data_utils.rand_name(cls.__name__ + '-description')
service = cls.services_client.create_service(
name=name,
@@ -137,7 +139,7 @@
@classmethod
def setup_test_user(cls, password=None, **kwargs):
"""Set up a test user."""
- username = data_utils.rand_name('test_user')
+ username = data_utils.rand_name(cls.__name__ + '-test_user')
email = username + '@testmail.tm'
user = cls.users_client.create_user(
@@ -195,10 +197,11 @@
@classmethod
def setup_test_tenant(cls):
"""Set up a test tenant."""
- name = data_utils.rand_name('test_tenant')
+ name = data_utils.rand_name(cls.__name__ + '-test_tenant')
tenant = cls.tenants_client.create_tenant(
name=name,
- description=data_utils.rand_name('desc'))['tenant']
+ description=data_utils.rand_name(
+ cls.__name__ + '-desc'))['tenant']
cls.tenants.append(tenant)
return tenant
@@ -213,8 +216,10 @@
cls.creds_client = cls.os_primary.credentials_client
cls.consumers_client = cls.os_primary.oauth_consumers_client
cls.domains_client = cls.os_primary.domains_client
+ cls.domain_config_client = cls.os_primary.domain_config_client
cls.endpoints_client = cls.os_primary.endpoints_v3_client
cls.groups_client = cls.os_primary.groups_client
+ cls.identity_client = cls.os_primary.identity_v3_client
cls.projects_client = cls.os_primary.projects_client
cls.policies_client = cls.os_primary.policies_client
cls.regions_client = cls.os_primary.regions_client
@@ -291,8 +296,9 @@
def setup_test_domain(cls):
"""Set up a test domain."""
domain = cls.domains_client.create_domain(
- name=data_utils.rand_name('test_domain'),
- description=data_utils.rand_name('desc'))['domain']
+ name=data_utils.rand_name(cls.__name__ + '-test_domain'),
+ description=data_utils.rand_name(
+ cls.__name__ + '-desc'))['domain']
cls.domains.append(domain)
return domain
@@ -300,7 +306,7 @@
@classmethod
def setup_test_group(cls):
"""Creates a group for test."""
- name = data_utils.rand_name('test_group')
+ name = data_utils.rand_name(cls.__name__ + '-test_group')
group = cls.groups_client.create_group(name=name)['group']
cls.groups.append(group)
@@ -309,8 +315,9 @@
@classmethod
def setup_test_policy(cls):
"""Creates a policy for test."""
- blob = data_utils.rand_name('test_blob')
- policy_type = data_utils.rand_name('policy_type')
+ blob = data_utils.rand_name(cls.__name__ + '-test_blob')
+ policy_type = data_utils.rand_name(
+ cls.__name__ + '-policy_type')
policy = cls.policies_client.create_policy(
blob=blob,
@@ -324,8 +331,10 @@
def setup_test_project(cls):
"""Set up a test project."""
project = cls.projects_client.create_project(
- name=data_utils.rand_name('test_project'),
- description=data_utils.rand_name('desc'))['project']
+ name=data_utils.rand_name(
+ cls.__name__ + '-testproject'),
+ description=data_utils.rand_name(
+ cls.__name__ + '-desc'))['project']
cls.projects.append(project)
return project
@@ -333,7 +342,8 @@
@classmethod
def setup_test_region(cls):
"""Creates a region for test."""
- description = data_utils.rand_name('test_region_desc')
+ description = data_utils.rand_name(
+ cls.__name__ + '-test_region_desc')
region = cls.regions_client.create_region(
description=description)['region']
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
new file mode 100644
index 0000000..2327cbb
--- /dev/null
+++ b/patrole_tempest_plugin/tests/api/identity/v3/test_auth_rbac.py
@@ -0,0 +1,43 @@
+# Copyright 2017 AT&T Corporation.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from tempest.lib import decorators
+
+from patrole_tempest_plugin import rbac_rule_validation
+from patrole_tempest_plugin.tests.api.identity import rbac_base
+
+
+class IdentityAuthV3RbacTest(rbac_base.BaseIdentityV3RbacTest):
+ """Tests the APIs that enforce the auth policy actions.
+
+ For more information about the auth policy actions, see:
+ https://github.com/openstack/keystone/blob/master/keystone/common/policies/auth.py
+ """
+
+ # TODO(felipemonteiro): Add tests for identity:get_auth_catalog and
+ # identity:get_auth_domains once the endpoints are implemented in Tempest's
+ # identity v3 client.
+
+ @classmethod
+ def setup_clients(cls):
+ super(IdentityAuthV3RbacTest, cls).setup_clients()
+ cls.client = cls.identity_client
+
+ @decorators.idempotent_id('2a9fbf7f-6feb-4161-ae4b-faf7d6421b1a')
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:get_auth_projects")
+ def test_list_auth_projects(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.list_auth_projects()['projects']
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
new file mode 100644
index 0000000..33526e7
--- /dev/null
+++ b/patrole_tempest_plugin/tests/api/identity/v3/test_domain_configuration_rbac.py
@@ -0,0 +1,167 @@
+# Copyright 2017 AT&T Corporation.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from tempest import config
+from tempest.lib.common.utils import data_utils
+from tempest.lib.common.utils import test_utils
+from tempest.lib import decorators
+
+from patrole_tempest_plugin import rbac_rule_validation
+from patrole_tempest_plugin.tests.api.identity import rbac_base
+
+CONF = config.CONF
+
+
+class DomainConfigurationV3RbacTest(rbac_base.BaseIdentityV3RbacTest):
+ """RBAC tests for domain configuration client.
+
+ Provides coverage for the following policy actions:
+ https://github.com/openstack/keystone/blob/master/keystone/common/policies/domain_config.py
+ """
+
+ identity = {"driver": "ldap"}
+ ldap = {"url": "ldap://myldap.com:389/",
+ "user_tree_dn": "ou=Users,dc=my_new_root,dc=org"}
+
+ @classmethod
+ def setup_clients(cls):
+ super(DomainConfigurationV3RbacTest, cls).setup_clients()
+ cls.client = cls.domain_config_client
+
+ @classmethod
+ def resource_setup(cls):
+ super(DomainConfigurationV3RbacTest, cls).resource_setup()
+ cls.domain_id = cls.setup_test_domain()['id']
+
+ def setUp(self):
+ super(DomainConfigurationV3RbacTest, self).setUp()
+ self._create_domain_config(self.domain_id)
+
+ def _create_domain_config(self, domain_id):
+ domain_config = self.client.create_domain_config(
+ domain_id, identity=self.identity, ldap=self.ldap)['config']
+ self.addCleanup(test_utils.call_and_ignore_notfound_exc,
+ self.client.delete_domain_config,
+ domain_id)
+ return domain_config
+
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:create_domain_config")
+ @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd115')
+ def test_create_domain_config(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self._create_domain_config(self.domain_id)
+
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:get_domain_config")
+ @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd118')
+ def test_show_domain_config(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.show_domain_config(self.domain_id)['config']
+
+ @decorators.idempotent_id('1b539f95-4991-4e09-960f-fa771e1007d7')
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:get_domain_config")
+ def test_show_domain_group_config(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.show_domain_group_config(self.domain_id, 'identity')[
+ 'config']
+
+ @decorators.idempotent_id('590c774d-a294-44f8-866e-aac9f4ab3809')
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:get_domain_config")
+ def test_show_domain_group_option_config(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.show_domain_group_option_config(self.domain_id, 'identity',
+ 'driver')['config']
+
+ @decorators.idempotent_id('21053885-1ce3-4167-b5e3-e470253481da')
+ @rbac_rule_validation.action(
+ service="keystone",
+ rule="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.
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.show_domain_group_config(
+ CONF.identity.default_domain_id, 'security_compliance')
+
+ @decorators.idempotent_id('d1addd10-9ae4-4360-9961-47324fd22f23')
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:get_domain_config_default")
+ def test_show_default_config_settings(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.show_default_config_settings()['config']
+
+ @decorators.idempotent_id('63183377-251f-4622-81f0-6b58a8a285c9')
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:get_domain_config_default")
+ def test_show_default_group_config(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.show_default_group_config('identity')['config']
+
+ @decorators.idempotent_id('6440e9c1-e8da-474d-9118-89996fffe5f8')
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:get_domain_config_default")
+ def test_show_default_group_option(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.show_default_group_option('identity', 'driver')['config']
+
+ @rbac_rule_validation.action(service="keystone",
+ rule="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()}}
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.update_domain_config(
+ self.domain_id, **updated_config)['config']
+
+ @decorators.idempotent_id('6e32bf96-dbe9-4ac8-b814-0e79fa948285')
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:update_domain_config")
+ def test_update_domain_group_config(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.update_domain_group_config(
+ self.domain_id, 'identity', identity=self.identity)['config']
+
+ @decorators.idempotent_id('d2c510da-a077-4c67-9522-27745ef2812b')
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:update_domain_config")
+ def test_update_domain_group_option_config(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.update_domain_group_option_config(
+ self.domain_id, 'identity', 'driver', driver='ldap')['config']
+
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:delete_domain_config")
+ @decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd117')
+ def test_delete_domain_config(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.delete_domain_config(self.domain_id)
+
+ @decorators.idempotent_id('f479694b-df02-4d5a-88b6-c8b52f9341eb')
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:delete_domain_config")
+ def test_delete_domain_group_config(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.delete_domain_group_config(self.domain_id, 'identity')
+
+ @decorators.idempotent_id('f594bde3-31c9-414f-922d-0ddafdc0ca40')
+ @rbac_rule_validation.action(service="keystone",
+ rule="identity:delete_domain_config")
+ def test_delete_domain_group_option_config(self):
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.client.delete_domain_group_option_config(
+ self.domain_id, 'identity', 'driver')
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 b45c091..a8cd022 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
@@ -34,7 +34,8 @@
@decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd111')
def test_update_domain(self):
domain = self.setup_test_domain()
- new_domain_name = data_utils.rand_name('test_update_domain')
+ new_domain_name = data_utils.rand_name(
+ self.__class__.__name__ + '-test_update_domain')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.domains_client.update_domain(domain['id'],
domain=domain,
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 74402d5..0fc29b7 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
@@ -41,7 +41,8 @@
@decorators.idempotent_id('790fb7be-a657-4a64-9b83-c43425cf180b')
def test_update_group(self):
group = self.setup_test_group()
- new_group_name = data_utils.rand_name('group')
+ new_group_name = data_utils.rand_name(
+ self.__class__.__name__ + '-group')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.groups_client.update_group(group['id'],
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 fab5a6e..5e21338 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
@@ -24,7 +24,8 @@
class IdentityConsumersV3RbacTest(rbac_base.BaseIdentityV3RbacTest):
def _create_consumer(self):
- description = data_utils.rand_name('test_create_consumer')
+ description = data_utils.rand_name(
+ self.__class__.__name__ + '-test_consumer')
consumer = self.consumers_client.create_consumer(
description)['consumer']
self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -53,7 +54,8 @@
@decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d972')
def test_update_consumer(self):
consumer = self._create_consumer()
- new_description = data_utils.rand_name('test_update_consumer')
+ new_description = data_utils.rand_name(
+ self.__class__.__name__ + '-test_consumer')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.consumers_client.update_consumer(consumer['id'],
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 da587d9..3e03ac0 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
@@ -34,7 +34,8 @@
@decorators.idempotent_id('9cfed3c6-0b27-4d15-be67-e06e0cfb01b9')
def test_update_policy(self):
policy = self.setup_test_policy()
- updated_policy_type = data_utils.rand_name('policy_type')
+ updated_policy_type = data_utils.rand_name(
+ self.__class__.__name__ + '-policy_type')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.policies_client.update_policy(policy['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 0c65602..51086ae 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
@@ -34,7 +34,8 @@
@decorators.idempotent_id('0f148510-63bf-11e6-1564-080044d0d905')
def test_update_project(self):
project = self.setup_test_project()
- new_desc = data_utils.rand_name('description')
+ new_desc = data_utils.rand_name(
+ self.__class__.__name__ + '-description')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.projects_client.update_project(project['id'],
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 541e8af..55a2f77 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
@@ -34,7 +34,8 @@
@decorators.idempotent_id('6bdaecd4-0843-4ed6-ab64-3a57ab0cd120')
def test_update_region(self):
region = self.setup_test_region()
- new_description = data_utils.rand_name('test_update_region')
+ new_description = data_utils.rand_name(
+ self.__class__.__name__ + '-test_update_region')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.regions_client.update_region(region['id'],
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 0458e16..22b03f5 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
@@ -44,7 +44,8 @@
rule="identity:update_role")
@decorators.idempotent_id('0f148510-63bf-11e6-1395-080044d0d905')
def test_update_role(self):
- new_role_name = data_utils.rand_name('test_update_role')
+ new_role_name = data_utils.rand_name(
+ self.__class__.__name__ + '-test_update_role')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.roles_client.update_role(self.role['id'],
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 2f0d1ac..44ce1a1 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
@@ -34,7 +34,7 @@
@decorators.idempotent_id('b39447d1-2cf6-40e5-a899-46f287f2ecf0')
def test_update_service(self):
service = self.setup_test_service()
- new_name = data_utils.rand_name('service')
+ new_name = data_utils.rand_name(self.__class__.__name__ + '-service')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.services_client.update_service(service['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 d3b3e4c..723455e 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
@@ -39,7 +39,8 @@
@decorators.idempotent_id('0f148510-63bf-11e6-4522-080044d0d905')
def test_update_user(self):
user = self.setup_test_user()
- new_email = data_utils.rand_name('user_email')
+ new_email = data_utils.rand_name(
+ self.__class__.__name__ + '-user_email')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.users_client.update_user(user['id'],
diff --git a/patrole_tempest_plugin/tests/api/image/v1/test_images_rbac.py b/patrole_tempest_plugin/tests/api/image/v1/test_images_rbac.py
index ae4e4d2..7010baa 100644
--- a/patrole_tempest_plugin/tests/api/image/v1/test_images_rbac.py
+++ b/patrole_tempest_plugin/tests/api/image/v1/test_images_rbac.py
@@ -35,7 +35,7 @@
RBAC test for the glance add_image policy.
"""
properties = {'prop1': 'val1'}
- image_name = data_utils.rand_name('image')
+ image_name = data_utils.rand_name(self.__class__.__name__ + '-Image')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.create_image(name=image_name,
container_format='bare',
@@ -50,7 +50,7 @@
RBAC test for the glance delete_image policy.
"""
- image_name = data_utils.rand_name('image')
+ image_name = data_utils.rand_name(self.__class__.__name__ + '-Image')
properties = {'prop1': 'val1'}
body = self.create_image(name=image_name,
container_format='bare',
@@ -68,7 +68,7 @@
RBAC test for the glance download_image policy.
"""
- image_name = data_utils.rand_name('image')
+ image_name = data_utils.rand_name(self.__class__.__name__ + '-Image')
properties = {'prop1': 'val1'}
body = self.create_image(name=image_name,
container_format='bare',
@@ -90,7 +90,7 @@
RBAC test for the glance get_image policy.
"""
- image_name = data_utils.rand_name('image')
+ image_name = data_utils.rand_name(self.__class__.__name__ + '-Image')
properties = {'prop1': 'val1'}
body = self.create_image(name=image_name,
container_format='bare',
@@ -122,7 +122,7 @@
RBAC test for the glance modify_image policy.
"""
- image_name = data_utils.rand_name('image')
+ image_name = data_utils.rand_name(self.__class__.__name__ + '-Image')
properties = {'prop1': 'val1'}
body = self.create_image(name=image_name,
container_format='bare',
@@ -141,7 +141,7 @@
RBAC test for the glance publicize_image policy.
"""
- image_name = data_utils.rand_name('image')
+ image_name = data_utils.rand_name(self.__class__.__name__ + '-Image')
properties = {'prop1': 'val1'}
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.create_image(name=image_name,
diff --git a/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_objects_rbac.py b/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_objects_rbac.py
index 1c937b0..74c64e1 100644
--- a/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_objects_rbac.py
+++ b/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_objects_rbac.py
@@ -35,7 +35,8 @@
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
# create a md object, it will be cleaned automatically after
# cleanup of namespace
- object_name = data_utils.rand_name('test-object')
+ object_name = data_utils.rand_name(
+ self.__class__.__name__ + '-test-object')
self.namespace_objects_client.create_namespace_object(
namespace['namespace'],
name=object_name)
@@ -66,7 +67,8 @@
RBAC test for the glance modify_metadef_object policy
"""
namespace = self.create_namespace()
- object_name = data_utils.rand_name('test-object')
+ object_name = data_utils.rand_name(
+ self.__class__.__name__ + '-test-object')
self.namespace_objects_client.create_namespace_object(
namespace['namespace'],
name=object_name)
@@ -89,7 +91,8 @@
RBAC test for the glance get_metadef_object policy
"""
namespace = self.create_namespace()
- object_name = data_utils.rand_name('test-object')
+ object_name = data_utils.rand_name(
+ self.__class__.__name__ + '-test-object')
self.namespace_objects_client.create_namespace_object(
namespace['namespace'],
name=object_name)
diff --git a/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_property_rbac.py b/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_property_rbac.py
index 0d194b7..93c50c4 100644
--- a/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_property_rbac.py
+++ b/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_property_rbac.py
@@ -38,7 +38,8 @@
"""
namespace = self.create_namespace()
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- property_name = data_utils.rand_name('test-ns-property')
+ property_name = data_utils.rand_name(
+ self.__class__.__name__ + '-test-ns-property')
self.namespace_properties_client.create_namespace_property(
namespace=namespace['namespace'], type="string",
title=property_name, name=self.resource_name)
@@ -65,7 +66,8 @@
RBAC test for the glance get_metadef_property policy
"""
namespace = self.create_namespace()
- property_name = data_utils.rand_name('test-ns-property')
+ property_name = data_utils.rand_name(
+ self.__class__.__name__ + '-test-ns-property')
self.namespace_properties_client.create_namespace_property(
namespace=namespace['namespace'], type="string",
title=property_name, name=self.resource_name)
@@ -83,7 +85,8 @@
RBAC test for the glance modify_metadef_property policy
"""
namespace = self.create_namespace()
- property_name = data_utils.rand_name('test-ns-property')
+ property_name = data_utils.rand_name(
+ self.__class__.__name__ + '-test-ns-property')
self.namespace_properties_client.create_namespace_property(
namespace=namespace['namespace'], type="string",
title=property_name, name=self.resource_name)
diff --git a/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_rbac.py b/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_rbac.py
index fb4a599..c6bd60e 100644
--- a/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_rbac.py
+++ b/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_rbac.py
@@ -31,7 +31,8 @@
RBAC test for the glance add_metadef_namespace policy
"""
- namespace_name = data_utils.rand_name('test-ns')
+ namespace_name = data_utils.rand_name(
+ self.__class__.__name__ + '-test-ns')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.namespaces_client.create_namespace(
namespace=namespace_name,
@@ -60,7 +61,8 @@
RBAC test for the glance modify_metadef_namespace policy
"""
- namespace_name = data_utils.rand_name('test-ns')
+ namespace_name = data_utils.rand_name(
+ self.__class__.__name__ + '-test-ns')
body = self.namespaces_client.create_namespace(
namespace=namespace_name,
protected=False)
diff --git a/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_tags_rbac.py b/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_tags_rbac.py
index cfd544c..7750a19 100644
--- a/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_tags_rbac.py
+++ b/patrole_tempest_plugin/tests/api/image/v2/test_image_namespace_tags_rbac.py
@@ -42,7 +42,8 @@
def resource_setup(cls):
super(NamespaceTagsRbacTest, cls).resource_setup()
cls.namespace = cls.namespaces_client.create_namespace(
- namespace=data_utils.rand_name('namespace'))['namespace']
+ namespace=data_utils.rand_name(
+ cls.__name__ + '-namespace'))['namespace']
@classmethod
def resource_cleanup(cls):
@@ -54,7 +55,7 @@
namespace_tag_names = []
for i in range(tag_count):
- tag_name = data_utils.rand_name('tag')
+ tag_name = data_utils.rand_name(self.__class__.__name__ + '-tag')
namespace_tag_names.append({'name': tag_name})
if multiple:
@@ -91,7 +92,8 @@
rule="modify_metadef_tag")
def test_update_namespace_tag(self):
tag_name = self._create_namespace_tag()
- updated_tag_name = data_utils.rand_name('tag')
+ updated_tag_name = data_utils.rand_name(
+ self.__class__.__name__ + '-tag')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.client.update_namespace_tag(self.namespace, tag_name,
diff --git a/patrole_tempest_plugin/tests/api/image/v2/test_image_resource_types_rbac.py b/patrole_tempest_plugin/tests/api/image/v2/test_image_resource_types_rbac.py
index 552a137..6727cc8 100644
--- a/patrole_tempest_plugin/tests/api/image/v2/test_image_resource_types_rbac.py
+++ b/patrole_tempest_plugin/tests/api/image/v2/test_image_resource_types_rbac.py
@@ -26,7 +26,8 @@
@classmethod
def resource_setup(cls):
super(ImageResourceTypesRbacTest, cls).resource_setup()
- cls.namespace_name = data_utils.rand_name('test-ns')
+ cls.namespace_name = data_utils.rand_name(
+ cls.__name__ + '-test-ns')
cls.namespaces_client.create_namespace(
namespace=cls.namespace_name,
protected=False)
diff --git a/patrole_tempest_plugin/tests/api/image/v2/test_images_rbac.py b/patrole_tempest_plugin/tests/api/image/v2/test_images_rbac.py
index 880f892..5b7c823 100644
--- a/patrole_tempest_plugin/tests/api/image/v2/test_images_rbac.py
+++ b/patrole_tempest_plugin/tests/api/image/v2/test_images_rbac.py
@@ -30,7 +30,7 @@
cls.client = cls.os_primary.image_client_v2
def _create_image(self, **kwargs):
- image_name = data_utils.rand_name('image')
+ image_name = data_utils.rand_name(self.__class__.__name__ + '-Image')
image = self.create_image(name=image_name,
container_format='bare',
disk_format='raw',
@@ -135,7 +135,8 @@
image = self._create_image()
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- updated_image_name = data_utils.rand_name('image')
+ updated_image_name = data_utils.rand_name(
+ self.__class__.__name__ + '-image')
self.client.update_image(image['id'], [
dict(replace='/name', value=updated_image_name)])
@@ -151,7 +152,9 @@
image = self._create_image()
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- self.client.add_image_tag(image['id'], data_utils.rand_name('tag'))
+ self.client.add_image_tag(
+ image['id'],
+ data_utils.rand_name(self.__class__.__name__ + '-tag'))
@decorators.idempotent_id('c4a0bf9c-b78b-48c6-a31f-72c95f943c6e')
@rbac_rule_validation.action(service="glance",
@@ -163,7 +166,7 @@
RBAC test for the glance delete_image_tag endpoint
"""
image = self._create_image()
- tag_name = data_utils.rand_name('tag')
+ tag_name = data_utils.rand_name(self.__class__.__name__ + '-tag')
self.client.add_image_tag(image['id'], tag_name)
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
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 133ea74..8208fde 100644
--- a/patrole_tempest_plugin/tests/api/network/test_networks_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_networks_rbac.py
@@ -33,7 +33,8 @@
def resource_setup(cls):
super(RbacNetworksTest, cls).resource_setup()
- network_name = data_utils.rand_name('rbac-admin-network-')
+ network_name = data_utils.rand_name(
+ cls.__name__ + '-rbac-admin-network-')
post_body = {'name': network_name}
body = cls.networks_client.create_network(**post_body)
@@ -65,7 +66,8 @@
provider_physical_network=None,
provider_segmentation_id=None):
- network_name = data_utils.rand_name('test-network-')
+ network_name = data_utils.rand_name(
+ self.__class__.__name__ + '-test-network-')
post_body = {'name': network_name}
if shared is not None:
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 5ea1180..1be46ab 100644
--- a/patrole_tempest_plugin/tests/api/network/test_routers_rbac.py
+++ b/patrole_tempest_plugin/tests/api/network/test_routers_rbac.py
@@ -74,7 +74,7 @@
RBAC test for the neutron
create_router:external_gateway_info:enable_snat policy
"""
- name = data_utils.rand_name('snat-router')
+ name = data_utils.rand_name(self.__class__.__name__ + '-snat-router')
external_gateway_info = {'network_id': self.network['id'],
'enable_snat': True}
@@ -94,7 +94,7 @@
RBAC test for the neutron
create_router:external_gateway_info:external_fixed_ips policy
"""
- name = data_utils.rand_name('snat-router')
+ name = data_utils.rand_name(self.__class__.__name__ + '-snat-router')
# Pick an unused IP address.
ip_list = net_utils.get_unused_ip_addresses(self.ports_client,
@@ -134,7 +134,8 @@
RBAC test for the neutron update_router policy
"""
- new_name = data_utils.rand_name('new-router-name')
+ new_name = data_utils.rand_name(self.__class__.__name__ +
+ '-new-router-name')
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.routers_client.update_router(self.router['id'],
name=new_name)
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 e04600e..20f4bea 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
@@ -30,7 +30,7 @@
@classmethod
def resource_setup(cls):
super(SecGroupRbacTest, cls).resource_setup()
- secgroup_name = data_utils.rand_name('secgroup')
+ secgroup_name = data_utils.rand_name(cls.__name__ + '-secgroup')
cls.secgroup = cls.security_groups_client.create_security_group(
name=secgroup_name)['security_group']
@@ -44,7 +44,7 @@
def _create_security_group(self):
# Create a security group
- name = data_utils.rand_name('secgroup')
+ name = data_utils.rand_name(self.__class__.__name__ + '-secgroup')
security_group =\
self.security_groups_client.create_security_group(
name=name)['security_group']
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 60484f1..219acb4 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
@@ -36,8 +36,10 @@
def _create_user_message(self):
"""Trigger a 'no valid host' situation to generate a message."""
- bad_protocol = data_utils.rand_name('storage_protocol')
- bad_vendor = data_utils.rand_name('vendor_name')
+ bad_protocol = data_utils.rand_name(
+ self.__class__.__name__ + '-storage_protocol')
+ bad_vendor = data_utils.rand_name(
+ self.__class__.__name__ + '-vendor_name')
extra_specs = {'storage_protocol': bad_protocol,
'vendor_name': bad_vendor}
vol_type_name = data_utils.rand_name(
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 b98c39a..d780de7 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
@@ -13,18 +13,20 @@
# License for the specific language governing permissions and limitations
# under the License.
-from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.volume import rbac_base
-CONF = config.CONF
-
class VolumesV2BasicCrudRbacTest(rbac_base.BaseVolumeRbacTest):
+ @classmethod
+ def resource_setup(cls):
+ super(VolumesV2BasicCrudRbacTest, cls).resource_setup()
+ cls.volume = cls.create_volume()
+
@rbac_rule_validation.action(service="cinder",
rule="volume:create")
@decorators.idempotent_id('426b08ef-6394-4d06-9128-965d5a6c38ef')
@@ -43,36 +45,32 @@
@rbac_rule_validation.action(service="cinder", rule="volume:get")
@decorators.idempotent_id('c4c3fdd5-b1b1-49c3-b977-a9f40ee9257a')
def test_get_volume(self):
- volume = self.create_volume()
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- self.volumes_client.show_volume(volume['id'])
+ self.volumes_client.show_volume(self.volume['id'])
@rbac_rule_validation.action(service="cinder",
rule="volume:get_all")
@decorators.idempotent_id('e3ab7906-b04b-4c45-aa11-1104d302f940')
def test_volume_list(self):
- # Get a list of Volumes
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.volumes_client.list_volumes()
+ @rbac_rule_validation.action(service="cinder", rule="volume:update")
+ @decorators.idempotent_id('b751b889-9a9b-40d8-ae7d-4b0f65e71ac7')
+ def test_update_volume(self):
+ update_name = data_utils.rand_name(self.__class__.__name__ + 'volume')
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.volumes_client.update_volume(self.volume['id'],
+ name=update_name)
+
@rbac_rule_validation.action(
service="cinder",
rule="volume_extension:volume_image_metadata")
@decorators.idempotent_id('3d48ca91-f02b-4616-a69d-4a8b296c8529')
def test_volume_list_image_metadata(self):
- # Get a list of Volumes
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.volumes_client.list_volumes(detail=True)
- @rbac_rule_validation.action(service="cinder", rule="volume:update")
- @decorators.idempotent_id('b751b889-9a9b-40d8-ae7d-4b0f65e71ac7')
- def test_update_volume(self):
- volume = self.create_volume()
- new_name = data_utils.rand_name('volume')
- self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- self.volumes_client.update_volume(volume['id'],
- name=new_name)
-
class VolumesV3BasicCrudRbacTest(VolumesV2BasicCrudRbacTest):
_api_version = 3
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 d07e5c6..8ee8713 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
@@ -23,6 +23,7 @@
class VolumeMetadataRbacTest(rbac_base.BaseVolumeRbacTest):
+
@classmethod
def setup_clients(cls):
super(VolumeMetadataRbacTest, cls).setup_clients()
@@ -31,36 +32,38 @@
cls.image_client = cls.os_primary.image_client
elif CONF.image_feature_enabled.api_v2:
cls.image_client = cls.os_primary.image_client_v2
- cls.image_id = CONF.compute.image_ref
@classmethod
def resource_setup(cls):
super(VolumeMetadataRbacTest, cls).resource_setup()
cls.volume = cls.create_volume()
- cls._add_metadata(cls.volume)
cls.image_id = CONF.compute.image_ref
- @classmethod
- def _add_metadata(cls, volume):
+ def setUp(self):
+ super(VolumeMetadataRbacTest, self).setUp()
+ self._add_metadata(self.volume)
+
+ def tearDown(self):
+ self.volumes_client.update_volume_metadata(self.volume['id'], {})
+ super(VolumeMetadataRbacTest, self).tearDown()
+
+ def _add_metadata(self, volume):
# Create metadata for the volume
- metadata = {"key1": "value1",
- "key2": "value2",
- "key3": "value3",
- "key4": "<value&special_chars>"}
- cls.client.create_volume_metadata(cls.volume['id'],
- metadata)['metadata']
+ metadata = {"key1": "value1"}
+ self.client.create_volume_metadata(self.volume['id'], metadata)[
+ 'metadata']
@rbac_rule_validation.action(service="cinder",
- rule="volume:update_volume_metadata")
+ rule="volume:create_volume_metadata")
@decorators.idempotent_id('232bbb8b-4c29-44dc-9077-b1398c20b738')
def test_create_volume_metadata(self):
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self._add_metadata(self.volume)
@rbac_rule_validation.action(service="cinder",
- rule="volume:get")
+ rule="volume:get_volume_metadata")
@decorators.idempotent_id('87ea37d9-23ab-47b2-a59c-16fc4d2c6dfa')
- def test_get_volume_metadata(self):
+ def test_show_volume_metadata(self):
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.client.show_volume_metadata(self.volume['id'])['metadata']
@@ -85,21 +88,18 @@
rule="volume:update_volume_metadata")
@decorators.idempotent_id('8ce2ff80-99ba-49ae-9bb1-7e96729ee5af')
def test_update_volume_metadata_item(self):
- # Metadata to update
- update_item = {"key3": "value3_update"}
+ updated_metadata_item = {"key1": "value1_update"}
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- self.client.update_volume_metadata_item(self.volume['id'], "key3",
- update_item)['meta']
+ self.client.update_volume_metadata_item(
+ self.volume['id'], "key1", updated_metadata_item)['meta']
@decorators.idempotent_id('a231b445-97a5-4657-b05f-245895e88da9')
@rbac_rule_validation.action(service="cinder",
rule="volume:update_volume_metadata")
def test_update_volume_metadata(self):
- # Metadata to update
- update = {"key1": "value1",
- "key3": "value3"}
+ updated_metadata = {"key1": "value1"}
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- self.client.update_volume_metadata(self.volume['id'], update)
+ self.client.update_volume_metadata(self.volume['id'], updated_metadata)
@decorators.idempotent_id('a9d9e825-5ea3-42e6-96f3-7ac4e97b2ed0')
@rbac_rule_validation.action(
@@ -107,9 +107,5 @@
rule="volume:update_volume_metadata")
def test_update_volume_image_metadata(self):
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- self.client.update_volume_image_metadata(self.volume['id'],
- image_id=self.image_id)
-
-
-class VolumeMetadataV3RbacTest(VolumeMetadataRbacTest):
- _api_version = 3
+ self.client.update_volume_image_metadata(
+ self.volume['id'], image_id=self.image_id)
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 8c04a8d..c39a376 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
@@ -43,7 +43,7 @@
cls.volume = cls.create_volume()
def _create_backup(self, volume_id):
- backup_name = data_utils.rand_name('backup')
+ backup_name = data_utils.rand_name(self.__class__.__name__ + 'backup')
backup = self.backups_client.create_backup(
volume_id=volume_id, name=backup_name)['backup']
self.addCleanup(
diff --git a/releasenotes/notes/domain-config-rbac-tests-8806ca7c159ddf94.yaml b/releasenotes/notes/domain-config-rbac-tests-8806ca7c159ddf94.yaml
new file mode 100644
index 0000000..8108cf4
--- /dev/null
+++ b/releasenotes/notes/domain-config-rbac-tests-8806ca7c159ddf94.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - |
+ Adds RBAC tests for the domain configuration Keystone v3 extension
+ API.