Adds service_user_id into relation data

This is necessary to avoid collisions between
same usernames used service users.

Depends-on: I4fbfa8fba84b11c4e30e4db9a0c358db1e8c94f1
Closes-Bug: #2030755
Change-Id: I500fd131cbd6cd5c2b38fdbe81b8b48e50a3e3f7
This commit is contained in:
Erlon R. Cruz 2023-10-20 17:55:10 -03:00
parent b4ee292bb6
commit 86a323abfe
2 changed files with 9 additions and 1 deletions

View File

@ -2159,6 +2159,9 @@ def add_service_to_keystone(relation_id=None, remote_unit=None):
if get_api_version() > 2:
service_domain = SERVICE_DOMAIN
service_domain_id = manager.resolve_domain_id(SERVICE_DOMAIN)
service_user_id = manager.resolve_user_id(service_username,
user_domain=service_domain)
service_tenant = config('service-tenant')
service_tenant_id = manager.resolve_tenant_id(service_tenant,
domain=service_domain)
@ -2185,6 +2188,7 @@ def add_service_to_keystone(relation_id=None, remote_unit=None):
"internal_port": config("service-port"),
"auth_port": config("admin-port"),
"service_username": service_username,
"service_user_id": service_user_id,
"service_password": service_password,
"service_domain": service_domain,
"service_domain_id": service_domain_id,

View File

@ -465,7 +465,10 @@ class TestKeystoneUtils(CharmTestCase):
mock_keystone = MagicMock()
mock_keystone.resolve_tenant_id.return_value = 'tenant_id'
mock_keystone.resolve_domain_id.return_value = service_domain_id
mock_keystone.resolve_user_id.return_value = admin_user_id
if test_api_version > 2:
mock_keystone.resolve_user_id.return_value = admin_user_id
else:
mock_keystone.resolve_user_id.return_value = None
KeystoneManager.return_value = mock_keystone
self.relation_get.return_value = {'service': 'keystone',
@ -506,6 +509,7 @@ class TestKeystoneUtils(CharmTestCase):
'internal_protocol': 'http',
'internal_port': 81,
'service_username': 'keystone',
'service_user_id': admin_user_id,
'service_password': 'password',
'service_domain': service_domain,
'service_domain_id': service_domain_id,