diff --git a/config_tempest/clients.py b/config_tempest/clients.py index 155465d8..6f7c50cd 100644 --- a/config_tempest/clients.py +++ b/config_tempest/clients.py @@ -64,7 +64,7 @@ class ProjectsClient(object): if project['name'] == project_name: return project raise exceptions.NotFound( - 'No such tenant/project (%s) in %s' % (project_name, projects)) + 'No such project/tenant (%s) in %s' % (project_name, projects)) def create_project(self, name, description): if self.identity_version == "v2": @@ -99,7 +99,7 @@ class ClientManager(object): catalog_type, default_params) - self.tenants = ProjectsClient( + self.projects = ProjectsClient( self.auth_provider, conf.get_defaulted('identity', 'catalog_type'), self.identity_region, @@ -178,10 +178,10 @@ class ClientManager(object): self.get_nova_net_client = create_nova_network_client self.get_neutron_client = create_neutron_client - # Set admin tenant id needed for keystone v3 tests. + # Set admin project id needed for keystone v3 tests. if creds.admin: - tenant = self.tenants.get_project_by_name(creds.tenant_name) - conf.set('auth', 'admin_project_id', tenant['id']) + project = self.projects.get_project_by_name(creds.project_name) + conf.set('auth', 'admin_project_id', project['id']) def _get_default_params(self, conf): default_params = { diff --git a/config_tempest/credentials.py b/config_tempest/credentials.py index 41c03e01..77fb0f1f 100644 --- a/config_tempest/credentials.py +++ b/config_tempest/credentials.py @@ -33,7 +33,7 @@ class Credentials(object): self._conf = conf self.username = self.get_credential('username') self.password = self.get_credential('password') - self.tenant_name = self.get_credential('project_name') + self.project_name = self.get_credential('project_name') self.identity_version = self._get_identity_version() self.api_version = 3 if self.identity_version == "v3" else 2 self.identity_region = self._conf.get_defaulted('identity', 'region') @@ -85,11 +85,11 @@ class Credentials(object): creds_kwargs = {'username': self.username, 'password': self.password} if self.identity_version == 'v3': - creds_kwargs.update({'project_name': self.tenant_name, + creds_kwargs.update({'project_name': self.project_name, 'domain_name': 'Default', 'user_domain_name': 'Default'}) else: - creds_kwargs.update({'project_name': self.tenant_name}) + creds_kwargs.update({'project_name': self.project_name}) return creds_kwargs def set_credentials(self): diff --git a/config_tempest/main.py b/config_tempest/main.py index a6117831..309925ae 100755 --- a/config_tempest/main.py +++ b/config_tempest/main.py @@ -379,7 +379,7 @@ def config_tempest(**kwargs): services = Services(clients, conf, credentials) if kwargs.get('create', False) and kwargs.get('test_accounts') is None: - users = Users(clients.tenants, clients.roles, clients.users, conf) + users = Users(clients.projects, clients.roles, clients.users, conf) users.create_tempest_users(services.is_service('orchestration')) flavors = Flavors(clients.flavors, kwargs.get('create', False), conf) flavors.create_tempest_flavors() diff --git a/config_tempest/tests/base.py b/config_tempest/tests/base.py index ee6ee286..be934493 100644 --- a/config_tempest/tests/base.py +++ b/config_tempest/tests/base.py @@ -41,7 +41,7 @@ class BaseConfigTempestTest(base.BaseTestCase): conf.set("identity", "uri", uri + V2, priority=True) conf.set("identity", "uri_v3", uri + V3) conf.set("auth", "admin_username", "admin") - conf.set("auth", "admin_project_name", "adminTenant") + conf.set("auth", "admin_project_name", "adminProject") conf.set("auth", "admin_password", "adminPass") conf.set("auth", "use_dynamic_credentials", "False") return conf @@ -58,7 +58,7 @@ class BaseConfigTempestTest(base.BaseTestCase): conf.set("identity", "uri", uri + V2, priority=True) conf.set("identity", "uri_v3", uri + V3) conf.set("auth", "admin_username", "admin") - conf.set("auth", "admin_project_name", "adminTenant") + conf.set("auth", "admin_project_name", "adminProject") conf.set("auth", "admin_password", "adminPass") conf.set("auth", "use_dynamic_credentials", "True") return conf diff --git a/config_tempest/tests/test_accounts.py b/config_tempest/tests/test_accounts.py index a3f23f13..b5acaeb9 100644 --- a/config_tempest/tests/test_accounts.py +++ b/config_tempest/tests/test_accounts.py @@ -36,7 +36,7 @@ class TestAccounts(BaseConfigTempestTest): # credentials under auth section accounts.create_accounts_file(True, path, self.conf) mock_write.assert_called_with(path, "admin", "adminPass", - "adminTenant") + "adminProject") self.assertEqual(self.conf.get("auth", "test_accounts_file"), os.path.abspath(path)) diff --git a/config_tempest/tests/test_clients.py b/config_tempest/tests/test_clients.py index 85d3c378..12c33bfd 100644 --- a/config_tempest/tests/test_clients.py +++ b/config_tempest/tests/test_clients.py @@ -114,9 +114,9 @@ class TestClientManager(BaseConfigTempestTest): 'get_project_by_name') self.useFixture(MonkeyPatch(func2mock, mock_function)) ClientManager(self.conf, self.creds) - # check if admin tenant id was set - admin_tenant_id = self.conf.get("auth", "admin_project_id") - self.assertEqual(admin_tenant_id, "my_fake_id") + # check if admin project id was set + admin_project_id = self.conf.get("auth", "admin_project_id") + self.assertEqual(admin_project_id, "my_fake_id") def test_get_service_client(self): resp = self.client_manager.get_service_client('image') diff --git a/config_tempest/tests/test_config_tempest.py b/config_tempest/tests/test_config_tempest.py index eb217f18..1a152e66 100644 --- a/config_tempest/tests/test_config_tempest.py +++ b/config_tempest/tests/test_config_tempest.py @@ -34,13 +34,14 @@ class TestOsClientConfigSupport(BaseConfigTempestTest): super(TestOsClientConfigSupport, self).setUp() self.conf = self._get_conf("v2.0", "v3") - def _check_credentials(self, manager, username, password, tenant_name): + def _check_credentials(self, manager, username, password, project_name): exp_user = manager.auth_provider.credentials._initial['username'] exp_pass = manager.auth_provider.credentials._initial['password'] - exp_tenant = manager.auth_provider.credentials._initial['project_name'] + creds = manager.auth_provider.credentials + exp_project = creds._initial['project_name'] self.assertEqual(exp_user, username) self.assertEqual(exp_pass, password) - self.assertEqual(exp_tenant, tenant_name) + self.assertEqual(exp_project, project_name) @mock.patch('os_client_config.cloud_config.CloudConfig') def _override_setup(self, mock_args): diff --git a/config_tempest/tests/test_credentials.py b/config_tempest/tests/test_credentials.py index b963d9dd..b74581c0 100644 --- a/config_tempest/tests/test_credentials.py +++ b/config_tempest/tests/test_credentials.py @@ -71,7 +71,7 @@ class TestCredentials(BaseConfigTempestTest): self.useFixture(MonkeyPatch(function2mock, mock_function)) self.creds.username = "name" self.creds.password = "pass" - self.creds.tenant_name = "Tname" + self.creds.project_name = "Tname" self.creds.set_credentials() mock_function.assert_called_with( auth_url=None, fill_in=False, identity_version='v2', @@ -85,7 +85,7 @@ class TestCredentials(BaseConfigTempestTest): self.useFixture(MonkeyPatch(function2mock, mock_function)) self.creds.username = "name" self.creds.password = "pass" - self.creds.tenant_name = "project_name" + self.creds.project_name = "project_name" self.creds.identity_version = "v3" self.creds.set_credentials() mock_function.assert_called_with( diff --git a/config_tempest/tests/test_tempest_conf.py b/config_tempest/tests/test_tempest_conf.py index a2c79104..9fc5726c 100644 --- a/config_tempest/tests/test_tempest_conf.py +++ b/config_tempest/tests/test_tempest_conf.py @@ -66,7 +66,7 @@ class TestTempestConf(BaseConfigTempestTest): remove_exts = ["router", "project-id", "dvr"] remove = { "identity.username": ["demo"], - "identity.project_name": ["tenant"], + "identity.project_name": ["project"], "compute.image_ssh_user": ["rhel", "cirros"], "network-feature-enabled.api_extensions": remove_exts } diff --git a/config_tempest/tests/test_users.py b/config_tempest/tests/test_users.py index 42201486..3568bc42 100644 --- a/config_tempest/tests/test_users.py +++ b/config_tempest/tests/test_users.py @@ -25,15 +25,16 @@ class TestUsers(BaseConfigTempestTest): def setUp(self): super(TestUsers, self).setUp() self.conf = self._get_conf("v2.0", "v3") - tenants_client = self._get_clients(self.conf).tenants + projects_client = self._get_clients(self.conf).projects users_client = self._get_clients(self.conf).users roles_client = self._get_clients(self.conf).roles - self.Service = Users(tenants_client, roles_client, + self.Service = Users(projects_client, roles_client, users_client, self.conf) self.username = "test_user" self.password = "cryptic" - self.tenant_name = "project" - self.tenant_description = "Tenant for Tempest %s user" % self.username + self.project_name = "project" + description = "Project for Tempest %s user" % self.username + self.project_description = description self.role_name = "fake_role" self.email = "%s@test.com" % self.username self.users = {'users': @@ -48,18 +49,18 @@ class TestUsers(BaseConfigTempestTest): 'id': "fake_role_id2"}]} @mock.patch('config_tempest.users.Users.' - 'create_user_with_tenant') + 'create_user_with_project') @mock.patch('config_tempest.users.Users.give_role_to_user') def _test_create_tempest_user(self, mock_give_role_to_user, - mock_create_user_with_tenant, + mock_create_user_with_project, orchestration=False): alt_username = "my_user" alt_password = "my_pass" - alt_tenant_name = "my_tenant" + alt_project_name = "my_project" self.conf.set("identity", "alt_username", alt_username) self.conf.set("identity", "alt_password", alt_password) - self.conf.set("identity", "alt_project_name", alt_tenant_name) + self.conf.set("identity", "alt_project_name", alt_project_name) self.Service.create_tempest_users(orchestration) if orchestration: self.assertEqual(mock_give_role_to_user.mock_calls, [ @@ -75,7 +76,7 @@ class TestUsers(BaseConfigTempestTest): mock_give_role_to_user.assert_called_with( self.conf.get('auth', 'admin_username'), role_name='admin') - self.assertEqual(mock_create_user_with_tenant.mock_calls, [ + self.assertEqual(mock_create_user_with_project.mock_calls, [ mock.call(self.conf.get('identity', 'username'), self.conf.get('identity', 'password'), self.conf.get('identity', 'project_name')), @@ -95,17 +96,17 @@ class TestUsers(BaseConfigTempestTest): @mock.patch('config_tempest.clients.ProjectsClient.create_project') @mock.patch('tempest.lib.services.identity.v2.users_client.' 'UsersClient.create_user') - def test_create_user_with_tenant(self, - mock_create_user, - mock_create_project, - mock_get_project_by_name): + def test_create_user_with_project(self, + mock_create_user, + mock_create_project, + mock_get_project_by_name): mock_get_project_by_name.return_value = {'id': "fake-id"} - self.Service.create_user_with_tenant( + self.Service.create_user_with_project( username=self.username, password=self.password, - tenant_name=self.tenant_name) + project_name=self.project_name) mock_create_project.assert_called_with( - name=self.tenant_name, description=self.tenant_description) + name=self.project_name, description=self.project_description) mock_create_user.assert_called_with(name=self.username, password=self.password, tenantId="fake-id", @@ -116,7 +117,7 @@ class TestUsers(BaseConfigTempestTest): @mock.patch('config_tempest.clients.ProjectsClient.create_project') @mock.patch('tempest.lib.services.identity.v2' '.users_client.UsersClient.create_user') - def test_create_user_with_tenant_tenant_exists( + def test_create_user_with_project_project_exists( self, mock_create_user, mock_create_project, @@ -124,12 +125,12 @@ class TestUsers(BaseConfigTempestTest): mock_get_project_by_name.return_value = {'id': "fake-id"} exc = exceptions.Conflict mock_create_project.side_effect = exc - self.Service.create_user_with_tenant( + self.Service.create_user_with_project( username=self.username, password=self.password, - tenant_name=self.tenant_name) + project_name=self.project_name) mock_create_project.assert_called_with( - name=self.tenant_name, description=self.tenant_description) + name=self.project_name, description=self.project_description) mock_create_user.assert_called_with( name=self.username, password=self.password, @@ -143,8 +144,8 @@ class TestUsers(BaseConfigTempestTest): 'tenants_client.TenantsClient.create_tenant') @mock.patch('tempest.lib.services.identity.' 'v2.users_client.UsersClient.create_user') - def test_create_user_with_tenant_user_exists( - self, mock_create_user, mock_create_tenant, + def test_create_user_with_project_user_exists( + self, mock_create_user, mock_create_project, mock_get_project_by_name, mock_get_user_by_username): mock_get_project_by_name.return_value = {'id': "fake-id"} @@ -152,11 +153,11 @@ class TestUsers(BaseConfigTempestTest): mock_create_user.side_effect = exc fake_user = {'id': "fake_user_id"} mock_get_user_by_username.return_value = fake_user - self.Service.create_user_with_tenant( + self.Service.create_user_with_project( username=self.username, password=self.password, - tenant_name=self.tenant_name) - mock_create_tenant.assert_called_with( - name=self.tenant_name, description=self.tenant_description) + project_name=self.project_name) + mock_create_project.assert_called_with( + name=self.project_name, description=self.project_description) mock_create_user.assert_called_with(name=self.username, password=self.password, tenantId="fake-id", @@ -168,7 +169,7 @@ class TestUsers(BaseConfigTempestTest): @mock.patch('config_tempest.clients.ProjectsClient.create_project') @mock.patch('tempest.lib.services.identity.v2.' 'users_client.UsersClient.create_user') - def test_create_user_with_tenant_exists_user_exists( + def test_create_user_with_project_exists_user_exists( self, mock_create_user, mock_create_project, mock_get_project_by_name, mock_get_user_by_username): @@ -178,11 +179,11 @@ class TestUsers(BaseConfigTempestTest): mock_create_user.side_effect = exc fake_user = {'id': "fake_user_id"} mock_get_user_by_username.return_value = fake_user - self.Service.create_user_with_tenant(username=self.username, - password=self.password, - tenant_name=self.tenant_name) + self.Service.create_user_with_project(username=self.username, + password=self.password, + project_name=self.project_name) mock_create_project.assert_called_with( - name=self.tenant_name, description=self.tenant_description) + name=self.project_name, description=self.project_description) mock_create_user.assert_called_with(name=self.username, password=self.password, tenantId="fake-id", diff --git a/config_tempest/users.py b/config_tempest/users.py index 74e78ca4..42ad6fbe 100644 --- a/config_tempest/users.py +++ b/config_tempest/users.py @@ -18,15 +18,15 @@ from tempest.lib import exceptions class Users(object): - def __init__(self, tenants_client, roles_client, users_client, conf): + def __init__(self, projects_client, roles_client, users_client, conf): """Init. - :type tenants_client: ProjectsClient object + :type projects_client: ProjectsClient object :type roles_client: RolesClient object from tempest lib :type users_client: UsersClient object from tempest lib :type conf: TempestConf object """ - self.tenants_client = tenants_client + self.projects_client = projects_client self.roles_client = roles_client self.users_client = users_client self._conf = conf @@ -37,13 +37,13 @@ class Users(object): :type orchestration: boolean """ sec = 'identity' - self.create_user_with_tenant(self._conf.get(sec, 'username'), - self._conf.get(sec, 'password'), - self._conf.get(sec, 'project_name')) + self.create_user_with_project(self._conf.get(sec, 'username'), + self._conf.get(sec, 'password'), + self._conf.get(sec, 'project_name')) - self.create_user_with_tenant(self._conf.get(sec, 'alt_username'), - self._conf.get(sec, 'alt_password'), - self._conf.get(sec, 'alt_project_name')) + self.create_user_with_project(self._conf.get(sec, 'alt_username'), + self._conf.get(sec, 'alt_password'), + self._conf.get(sec, 'alt_project_name')) username = self._conf.get_defaulted('auth', 'admin_username') @@ -59,14 +59,14 @@ class Users(object): def give_role_to_user(self, username, role_name, role_required=True): - """Give the user a role in the project (tenant). + """Give the user a role in the project. :type username: string :type role_name: string :type role_required: boolean """ - tenant_name = self._conf.get('identity', 'project_name') - tenant_id = self.tenants_client.get_project_by_name(tenant_name)['id'] + project_name = self._conf.get('identity', 'project_name') + proj_id = self.projects_client.get_project_by_name(project_name)['id'] users = self.users_client.list_users() user_ids = [u['id'] for u in users['users'] if u['name'] == username] user_id = user_ids[0] @@ -79,36 +79,36 @@ class Users(object): return role_id = role_ids[0] try: - self.roles_client.create_user_role_on_project(tenant_id, user_id, + self.roles_client.create_user_role_on_project(proj_id, user_id, role_id) LOG.debug("User '%s' was given the '%s' role in project '%s'", - username, role_name, tenant_name) + username, role_name, project_name) except exceptions.Conflict: LOG.debug("(no change) User '%s' already has the '%s' role in" - " project '%s'", username, role_name, tenant_name) + " project '%s'", username, role_name, project_name) - def create_user_with_tenant(self, username, password, tenant_name): - """Create a user and a tenant if it doesn't exist. + def create_user_with_project(self, username, password, project_name): + """Create a user and a project if it doesn't exist. :type username: string :type password: string - :type tenant_name: string + :type project_name: string """ - LOG.info("Creating user '%s' with tenant '%s' and password '%s'", - username, tenant_name, password) - tenant_description = "Tenant for Tempest %s user" % username + LOG.info("Creating user '%s' with project '%s' and password '%s'", + username, project_name, password) + project_description = "Project for Tempest %s user" % username email = "%s@test.com" % username - # create a tenant + # create a project try: - self.tenants_client.create_project(name=tenant_name, - description=tenant_description) + self.projects_client.create_project( + name=project_name, description=project_description) except exceptions.Conflict: - LOG.info("(no change) Tenant '%s' already exists", tenant_name) + LOG.info("(no change) Project '%s' already exists", project_name) - tenant_id = self.tenants_client.get_project_by_name(tenant_name)['id'] + proj_id = self.projects_client.get_project_by_name(project_name)['id'] params = {'name': username, 'password': password, - 'tenantId': tenant_id, 'email': email} + 'tenantId': proj_id, 'email': email} # create a user try: self.users_client.create_user(**params) diff --git a/releasenotes/notes/replace-tenant-by-project,-part-1-638068c6c5c5ef9c.yaml b/releasenotes/notes/replace-tenant-by-project,-part-1-638068c6c5c5ef9c.yaml index e3673fa2..b5865a9b 100644 --- a/releasenotes/notes/replace-tenant-by-project,-part-1-638068c6c5c5ef9c.yaml +++ b/releasenotes/notes/replace-tenant-by-project,-part-1-638068c6c5c5ef9c.yaml @@ -1,5 +1,5 @@ --- -other: +upgrade: - | Use of 'tenant' wherever it's set to tempest.conf, is replaced by 'project'. This is part 1 of the tenant->project transition.