Move identity_utils to common.identity

identity_utils is an helper used to obtain a cred_client object
by some tempest tests; in an effort of keeping the interface
in test.py to the minimum required, moving that helper to
tempest.common.identity, so that it can still be used by a
few tempest tests but we don't have to support it as a stable
interface.

Change-Id: I6692bcf2b02d3d023a1db0dd0255b17e7a869a5e
This commit is contained in:
Andrea Frittoli 2017-09-14 06:31:52 -06:00
parent ba712ac26c
commit e1ed695996
7 changed files with 71 additions and 54 deletions

View File

@ -17,6 +17,7 @@ from oslo_log import log as logging
from testtools import matchers
from tempest.api.compute import base
from tempest.common import identity
from tempest.common import tempest_fixtures as fixtures
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
@ -93,10 +94,11 @@ class QuotasAdminTestJSON(base.BaseV2ComputeAdminTest):
# Verify that GET shows the updated quota set of project
project_name = data_utils.rand_name('cpu_quota_project')
project_desc = project_name + '-desc'
project = self.identity_utils.create_project(name=project_name,
description=project_desc)
project = identity.identity_utils(self.os_admin).create_project(
name=project_name, description=project_desc)
project_id = project['id']
self.addCleanup(self.identity_utils.delete_project, project_id)
self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
project_id)
self.adm_client.update_quota_set(project_id, ram='5120')
quota_set = self.adm_client.show_quota_set(project_id)['quota_set']
@ -106,12 +108,12 @@ class QuotasAdminTestJSON(base.BaseV2ComputeAdminTest):
user_name = data_utils.rand_name('cpu_quota_user')
password = data_utils.rand_password()
email = user_name + '@testmail.tm'
user = self.identity_utils.create_user(username=user_name,
password=password,
project=project,
email=email)
user = identity.identity_utils(self.os_admin).create_user(
username=user_name, password=password, project=project,
email=email)
user_id = user['id']
self.addCleanup(self.identity_utils.delete_user, user_id)
self.addCleanup(identity.identity_utils(self.os_admin).delete_user,
user_id)
self.adm_client.update_quota_set(project_id,
user_id=user_id,
@ -125,10 +127,11 @@ class QuotasAdminTestJSON(base.BaseV2ComputeAdminTest):
# Admin can delete the resource quota set for a project
project_name = data_utils.rand_name('ram_quota_project')
project_desc = project_name + '-desc'
project = self.identity_utils.create_project(name=project_name,
description=project_desc)
project = identity.identity_utils(self.os_admin).create_project(
name=project_name, description=project_desc)
project_id = project['id']
self.addCleanup(self.identity_utils.delete_project, project_id)
self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
project_id)
quota_set_default = (self.adm_client.show_quota_set(project_id)
['quota_set'])
ram_default = quota_set_default['ram']

View File

@ -14,6 +14,7 @@
# under the License.
from tempest.api.network import base
from tempest.common import identity
from tempest.common import utils
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
@ -46,10 +47,11 @@ class QuotasTest(base.BaseAdminNetworkTest):
# Add a project to conduct the test
project = data_utils.rand_name('test_project_')
description = data_utils.rand_name('desc_')
project = self.identity_utils.create_project(name=project,
description=description)
project = identity.identity_utils(self.os_admin).create_project(
name=project, description=description)
project_id = project['id']
self.addCleanup(self.identity_utils.delete_project, project_id)
self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
project_id)
# Change quotas for project
quota_set = self.admin_quotas_client.update_quotas(

View File

@ -16,6 +16,7 @@
import testtools
from tempest.api.network import base
from tempest.common import identity
from tempest.common import utils
from tempest import config
from tempest.lib.common.utils import data_utils
@ -66,10 +67,11 @@ class RoutersAdminTest(base.BaseAdminNetworkTest):
# Test creating router from admin user setting project_id.
project = data_utils.rand_name('test_tenant_')
description = data_utils.rand_name('desc_')
project = self.identity_utils.create_project(name=project,
description=description)
project = identity.identity_utils(self.os_admin).create_project(
name=project, description=description)
project_id = project['id']
self.addCleanup(self.identity_utils.delete_project, project_id)
self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
project_id)
name = data_utils.rand_name('router-')
create_body = self.admin_routers_client.create_router(

View File

@ -19,6 +19,7 @@ from oslo_log import log as logging
from testtools import matchers
from tempest.api.volume import base
from tempest.common import identity
from tempest.common import tempest_fixtures as fixtures
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
@ -92,9 +93,10 @@ class VolumeQuotaClassesTest(base.BaseVolumeAdminTest):
# Verify a new project's default quotas.
project_name = data_utils.rand_name('quota_class_tenant')
description = data_utils.rand_name('desc_')
project_id = self.identity_utils.create_project(
project_id = identity.identity_utils(self.os_admin).create_project(
name=project_name, description=description)['id']
self.addCleanup(self.identity_utils.delete_project, project_id)
self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
project_id)
default_quotas = self.admin_quotas_client.show_default_quota_set(
project_id)['quota_set']
self.assertThat(default_quotas.items(),

View File

@ -13,6 +13,7 @@
# under the License.
from tempest.api.volume import base
from tempest.common import identity
from tempest.common import tempest_fixtures as fixtures
from tempest.common import waiters
from tempest.lib.common.utils import data_utils
@ -117,10 +118,11 @@ class BaseVolumeQuotasAdminTestJSON(base.BaseVolumeAdminTest):
# Admin can delete the resource quota set for a project
project_name = data_utils.rand_name('quota_tenant')
description = data_utils.rand_name('desc_')
project = self.identity_utils.create_project(project_name,
description=description)
project = identity.identity_utils(self.os_admin).create_project(
project_name, description=description)
project_id = project['id']
self.addCleanup(self.identity_utils.delete_project, project_id)
self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
project_id)
quota_set_default = self.admin_quotas_client.show_default_quota_set(
project_id)['quota_set']
volume_default = quota_set_default['volumes']

View File

@ -13,8 +13,12 @@
# License for the specific language governing permissions and limitations
# under the License.
from tempest import config
from tempest.lib.common import cred_client
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
def get_tenant_by_name(client, tenant_name):
tenants = client.list_tenants()['tenants']
@ -30,3 +34,37 @@ def get_user_by_username(client, tenant_id, username):
if user['name'] == username:
return user
raise lib_exc.NotFound('No such user(%s) in %s' % (username, users))
def identity_utils(clients):
"""A client that abstracts v2 and v3 identity operations.
This can be used for creating and tearing down projects in tests. It
should not be used for testing identity features.
:param clients: a client manager.
:return
"""
if CONF.identity.auth_version == 'v2':
client = clients.identity_client
users_client = clients.users_client
project_client = clients.tenants_client
roles_client = clients.roles_client
domains_client = None
else:
client = clients.identity_v3_client
users_client = clients.users_v3_client
project_client = clients.projects_client
roles_client = clients.roles_v3_client
domains_client = clients.domains_client
try:
domain = client.auth_provider.credentials.project_domain_name
except AttributeError:
domain = CONF.auth.default_credentials_domain_name
return cred_client.get_creds_client(client, project_client,
users_client,
roles_client,
domains_client,
project_domain_name=domain)

View File

@ -27,7 +27,6 @@ from tempest import clients
from tempest.common import credentials_factory as credentials
from tempest.common import utils
from tempest import config
from tempest.lib.common import cred_client
from tempest.lib.common import fixed_network
from tempest.lib.common import validation_resources as vr
from tempest.lib import decorators
@ -612,37 +611,6 @@ class BaseTestCase(testtools.testcase.WithAttributes,
def credentials_provider(self):
return self._get_credentials_provider()
@property
def identity_utils(self):
"""A client that abstracts v2 and v3 identity operations.
This can be used for creating and tearing down projects in tests. It
should not be used for testing identity features.
"""
if CONF.identity.auth_version == 'v2':
client = self.os_admin.identity_client
users_client = self.os_admin.users_client
project_client = self.os_admin.tenants_client
roles_client = self.os_admin.roles_client
domains_client = None
else:
client = self.os_admin.identity_v3_client
users_client = self.os_admin.users_v3_client
project_client = self.os_admin.projects_client
roles_client = self.os_admin.roles_v3_client
domains_client = self.os_admin.domains_client
try:
domain = client.auth_provider.credentials.project_domain_name
except AttributeError:
domain = 'Default'
return cred_client.get_creds_client(client, project_client,
users_client,
roles_client,
domains_client,
project_domain_name=domain)
@classmethod
def get_identity_version(cls):
"""Returns the identity version used by the test class"""