Replace tenant by project, part 1

Replace use of tenant when it's setting to or reading from
tempest.conf (conf object).
The change is needed for correct reading of that value in
dependent patches - need to count on that it's project not
tenant anymore.

Change-Id: Ic2987ce322a0cd4a92d35b06a86aec95226f981e
Story: 2002116
Task: 19795
changes/17/573017/2
Martin Kopec 4 years ago
parent 154fe8878d
commit 283de20574
  1. 2
      config_tempest/clients.py
  2. 6
      config_tempest/constants.py
  3. 12
      config_tempest/credentials.py
  4. 10
      config_tempest/main.py
  5. 6
      config_tempest/tests/base.py
  6. 2
      config_tempest/tests/test_clients.py
  7. 13
      config_tempest/tests/test_config_tempest.py
  8. 4
      config_tempest/tests/test_credentials.py
  9. 4
      config_tempest/tests/test_tempest_conf.py
  10. 16
      config_tempest/tests/test_users.py
  11. 6
      config_tempest/users.py
  12. 6
      etc/default-overrides.conf
  13. 5
      releasenotes/notes/replace-tenant-by-project,-part-1-638068c6c5c5ef9c.yaml

@ -174,7 +174,7 @@ class ClientManager(object):
# Set admin tenant id needed for keystone v3 tests.
if creds.admin:
tenant = self.tenants.get_project_by_name(creds.tenant_name)
conf.set('identity', 'admin_tenant_id', tenant['id'])
conf.set('identity', 'admin_project_id', tenant['id'])
def _get_default_params(self, conf):
default_params = {

@ -38,13 +38,13 @@ ALL_CREDENTIALS_KEYS = {
"auth.admin_domain_name": [],
"identity.username": [],
"identity.password": [],
"identity.tenant_name": [],
"identity.project_name": [],
"identity.alt_username": [],
"identity.alt_password": [],
"identity.alt_tenant_name": [],
"identity.alt_project_name": [],
"identity.admin_username": [],
"identity.admin_password": [],
"identity.admin_tenant_name": [],
"identity.admin_project_name": [],
"identity.admin_domain_name": [],
}

@ -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('tenant_name')
self.tenant_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')
@ -61,17 +61,13 @@ class Credentials(object):
The function is providing the backwards compatibility for looking up
the credentials, because admin credentials were moved from identity
to auth section and admin_tenant_name was renamed to
admin_project_name.
to auth section.
:param key: name of the credential e.g. username, passsword ...
:type key: string
:returns: credential
:rtype: string
"""
if key == 'admin_tenant_name':
value = self._conf.get_defaulted('auth', 'admin_project_name')
else:
value = self._conf.get_defaulted('auth', key)
value = self._conf.get_defaulted('auth', key)
if value is None:
return self._conf.get_defaulted('identity', key)
return value
@ -103,7 +99,7 @@ class Credentials(object):
'domain_name': 'Default',
'user_domain_name': 'Default'})
else:
creds_kwargs.update({'tenant_name': self.tenant_name})
creds_kwargs.update({'project_name': self.tenant_name})
return creds_kwargs
def set_credentials(self):

@ -78,10 +78,10 @@ def load_basic_defaults(conf):
"identity": [
("username", "demo"),
("password", "secrete"),
("tenant_name", "demo"),
("project_name", "demo"),
("alt_username", "alt_demo"),
("alt_password", "secrete"),
("alt_tenant_name", "alt_demo")
("alt_project_name", "alt_demo")
],
"scenario": [
("img_dir", "etc")
@ -167,7 +167,7 @@ def set_options(conf, deployer_input, non_admin, overrides=[],
conf.set("identity", "admin_username", "")
# To maintain backward compatibility
# renamed as admin_project_name in auth section
conf.set("identity", "admin_tenant_name", "")
conf.set("identity", "admin_project_name", "")
# To maintain backward compatibility
# Moved to auth
conf.set("identity", "admin_password", "")
@ -327,13 +327,13 @@ def set_cloud_config_values(non_admin, cloud_creds, conf):
if non_admin:
conf.set('identity', 'username', cloud_creds['username'])
conf.set('identity',
'tenant_name',
'project_name',
cloud_creds['project_name'])
conf.set('identity', 'password', cloud_creds['password'])
else:
conf.set('identity', 'admin_username', cloud_creds['username'])
conf.set('identity',
'admin_tenant_name',
'admin_project_name',
cloud_creds['project_name'])
conf.set('identity', 'admin_password', cloud_creds['password'])
conf.set('identity', 'uri', cloud_creds['auth_url'])

@ -35,13 +35,13 @@ class BaseConfigTempestTest(base.BaseTestCase):
uri = "http://172.16.52.151:5000/"
conf.set("identity", "username", "demo")
conf.set("identity", "password", "secret")
conf.set("identity", "tenant_name", "demo")
conf.set("identity", "project_name", "demo")
conf.set("identity", "disable_ssl_certificate_validation", "true")
conf.set("identity", "auth_version", "v3")
conf.set("identity", "uri", uri + V2, priority=True)
conf.set("identity", "uri_v3", uri + V3)
conf.set("identity", "admin_username", "admin")
conf.set("identity", "admin_tenant_name", "adminTenant")
conf.set("identity", "admin_project_name", "adminTenant")
conf.set("identity", "admin_password", "adminPass")
conf.set("auth", "use_dynamic_credentials", "False")
return conf
@ -52,7 +52,7 @@ class BaseConfigTempestTest(base.BaseTestCase):
uri = "http://172.16.52.151:5000/"
conf.set("identity", "username", "demo")
conf.set("identity", "password", "secret")
conf.set("identity", "tenant_name", "demo")
conf.set("identity", "project_name", "demo")
conf.set("identity", "disable_ssl_certificate_validation", "true")
conf.set("identity", "auth_version", "v3")
conf.set("identity", "uri", uri + V2, priority=True)

@ -115,7 +115,7 @@ class TestClientManager(BaseConfigTempestTest):
self.useFixture(MonkeyPatch(func2mock, mock_function))
ClientManager(self.conf, self.creds)
# check if admin tenant id was set
admin_tenant_id = self.conf.get("identity", "admin_tenant_id")
admin_tenant_id = self.conf.get("identity", "admin_project_id")
self.assertEqual(admin_tenant_id, "my_fake_id")
def test_get_service_client(self):

@ -37,7 +37,7 @@ class TestOsClientConfigSupport(BaseConfigTempestTest):
def _check_credentials(self, manager, username, password, tenant_name):
exp_user = manager.auth_provider.credentials._initial['username']
exp_pass = manager.auth_provider.credentials._initial['password']
exp_tenant = manager.auth_provider.credentials._initial['tenant_name']
exp_tenant = manager.auth_provider.credentials._initial['project_name']
self.assertEqual(exp_user, username)
self.assertEqual(exp_pass, password)
self.assertEqual(exp_tenant, tenant_name)
@ -75,14 +75,14 @@ class TestOsClientConfigSupport(BaseConfigTempestTest):
self.assertEqual(cloud_args['password'],
conf.get('identity', 'password'))
self.assertEqual(cloud_args['project_name'],
conf.get('identity', 'tenant_name'))
conf.get('identity', 'project_name'))
else:
self.assertEqual(cloud_args['username'],
conf.get('identity', 'admin_username'))
self.assertEqual(cloud_args['password'],
conf.get('identity', 'admin_password'))
self.assertEqual(cloud_args['project_name'],
conf.get('identity', 'admin_tenant_name'))
conf.get('identity', 'admin_project_name'))
def test_init_manager_client_config(self):
self._obtain_client_config_data(True)
@ -100,7 +100,7 @@ class TestOsClientConfigSupport(BaseConfigTempestTest):
self._check_credentials(manager,
self.conf.get('identity', 'username'),
self.conf.get('identity', 'password'),
self.conf.get('identity', 'tenant_name'))
self.conf.get('identity', 'project_name'))
def test_init_manager_client_config_override(self):
self._override_setup()
@ -109,7 +109,7 @@ class TestOsClientConfigSupport(BaseConfigTempestTest):
self._check_credentials(manager,
self.conf.get('identity', 'username'),
self.conf.get('identity', 'password'),
self.conf.get('identity', 'tenant_name'))
self.conf.get('identity', 'project_name'))
def test_init_manager_client_config_admin_override(self):
self._override_setup()
@ -119,4 +119,5 @@ class TestOsClientConfigSupport(BaseConfigTempestTest):
self._check_credentials(manager,
self.conf.get('identity', 'admin_username'),
self.conf.get('identity', 'admin_password'),
self.conf.get('identity', 'admin_tenant_name'))
self.conf.get('identity',
'admin_project_name'))

@ -64,7 +64,7 @@ class TestCredentials(BaseConfigTempestTest):
expected_resp = {
'username': 'demo',
'password': 'secret',
'tenant_name': 'demo'
'project_name': 'demo'
}
self.assertEqual(self.creds._get_creds_kwargs(), expected_resp)
self.creds.identity_version = 'v3'
@ -88,7 +88,7 @@ class TestCredentials(BaseConfigTempestTest):
mock_function.assert_called_with(
auth_url=None, fill_in=False, identity_version='v2',
disable_ssl_certificate_validation='true',
ca_certs=None, password='pass', tenant_name='Tname',
ca_certs=None, password='pass', project_name='Tname',
username='name')
def test_set_credentials_v3(self):

@ -66,7 +66,7 @@ class TestTempestConf(BaseConfigTempestTest):
remove_exts = ["router", "project-id", "dvr"]
remove = {
"identity.username": ["demo"],
"identity.tenant_name": ["tenant"],
"identity.project_name": ["tenant"],
"compute.image_ssh_user": ["rhel", "cirros"],
"network-feature-enabled.api_extensions": remove_exts
}
@ -75,7 +75,7 @@ class TestTempestConf(BaseConfigTempestTest):
self.conf.set("network-feature-enabled", "api_extensions", api_exts)
self.conf.remove_values(remove)
self.assertFalse(self.conf.has_option("identity", "username"))
self.assertTrue(self.conf.has_option("identity", "tenant_name"))
self.assertTrue(self.conf.has_option("identity", "project_name"))
self.assertFalse(self.conf.has_option("compute", "image_ssh_user"))
conf_exts = self.conf.get("network-feature-enabled", "api_extensions")
conf_exts = conf_exts.split(',')

@ -59,7 +59,7 @@ class TestUsers(BaseConfigTempestTest):
alt_tenant_name = "my_tenant"
self.conf.set("identity", "alt_username", alt_username)
self.conf.set("identity", "alt_password", alt_password)
self.conf.set("identity", "alt_tenant_name", alt_tenant_name)
self.conf.set("identity", "alt_project_name", alt_tenant_name)
self.Service.create_tempest_users(orchestration)
if orchestration:
self.assertEqual(mock_give_role_to_user.mock_calls, [
@ -78,10 +78,10 @@ class TestUsers(BaseConfigTempestTest):
self.assertEqual(mock_create_user_with_tenant.mock_calls, [
mock.call(self.conf.get('identity', 'username'),
self.conf.get('identity', 'password'),
self.conf.get('identity', 'tenant_name')),
self.conf.get('identity', 'project_name')),
mock.call(self.conf.get('identity', 'alt_username'),
self.conf.get('identity', 'alt_password'),
self.conf.get('identity', 'alt_tenant_name')),
self.conf.get('identity', 'alt_project_name')),
])
def test_create_tempest_user(self):
@ -206,14 +206,14 @@ class TestUsers(BaseConfigTempestTest):
mock_get_project_by_name):
mock_get_project_by_name.return_value = \
{'id': "fake_tenant_id"}
{'id': "fake_project_id"}
mock_list_users.return_value = self.users
mock_list_roles.return_value = self.roles
self.Service.give_role_to_user(
username=self.username,
role_name=self.role_name)
mock_create_user_role_on_project.assert_called_with(
"fake_tenant_id", "fake_user_id", "fake_role_id")
"fake_project_id", "fake_user_id", "fake_role_id")
@mock.patch('config_tempest.clients.ProjectsClient.'
'get_project_by_name')
@ -234,7 +234,7 @@ class TestUsers(BaseConfigTempestTest):
mock_get_project_by_name):
role_name = "fake_role_that_does_not_exist"
mock_get_project_by_name.return_value = \
{'id': "fake_tenant_id"}
{'id': "fake_project_id"}
mock_list_users.return_value = self.users
mock_list_roles.return_value = self.roles
exc = Exception
@ -262,7 +262,7 @@ class TestUsers(BaseConfigTempestTest):
mock_get_project_by_name):
mock_get_project_by_name.return_value = \
{'id': "fake_tenant_id"}
{'id': "fake_project_id"}
mock_list_users.return_value = self.users
mock_list_roles.return_value = self.roles
self.Service.give_role_to_user(
@ -289,7 +289,7 @@ class TestUsers(BaseConfigTempestTest):
mock_get_project_by_name):
exc = exceptions.Conflict
mock_create_user_role_on_project.side_effect = exc
mock_get_project_by_name.return_value = {'id': "fake_tenant_id"}
mock_get_project_by_name.return_value = {'id': "fake_project_id"}
mock_list_users.return_value = self.users
mock_list_roles.return_value = self.roles
self.Service.give_role_to_user(

@ -39,11 +39,11 @@ class Users(object):
sec = 'identity'
self.create_user_with_tenant(self._conf.get(sec, 'username'),
self._conf.get(sec, 'password'),
self._conf.get(sec, 'tenant_name'))
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_tenant_name'))
self._conf.get(sec, 'alt_project_name'))
username = self._conf.get_defaulted('auth', 'admin_username')
if username is None:
@ -67,7 +67,7 @@ class Users(object):
:type role_name: string
:type role_required: boolean
"""
tenant_name = self._conf.get('identity', 'tenant_name')
tenant_name = self._conf.get('identity', 'project_name')
tenant_id = self.tenants_client.get_project_by_name(tenant_name)['id']
users = self.users_client.list_users()
user_ids = [u['id'] for u in users['users'] if u['name'] == username]

@ -37,7 +37,7 @@ admin_domain_name=Default
username=demo
# Tenant name to use for Nova API requests. (string value)
tenant_name=demo
project_name=demo
# API key to use when authenticating. (string value)
password=secrete
@ -48,7 +48,7 @@ alt_username=alt_demo
# Alternate user's Tenant name to use for Nova API requests.
# (string value)
alt_tenant_name=alt_demo
alt_project_name=alt_demo
# API key to use when authenticating as alternate user.
# (string value)
@ -64,7 +64,7 @@ admin_username=admin
# (string value)
# Parameter moved to auth section as admin_project_name. Would
# be deprecated in future releases
admin_tenant_name=admin
admin_project_name=admin
admin_domain_name=Default

@ -0,0 +1,5 @@
---
other:
- |
Use of 'tenant' wherever it's set to tempest.conf, is replaced
by 'project'. This is part 1 of the tenant->project transition.
Loading…
Cancel
Save