Make undercloud keystone credentials to be working with clouds.yaml

Tobiko in generall can use clouds.yaml file and configured cloud name
to get credentials to the cloud.
But in the undercloud module, it always tried to get credentials using
environment variables and that didn't worked well with
OS_CLOUD variable.
Now when OS_CLOUD is in the env variables, it will use CloudsFile
credentials to make it working fine.

Change-Id: Ia9d976af4fd2107d22de585bf9bbdb148415c15f
This commit is contained in:
Slawek Kaplonski 2022-06-24 14:08:06 +02:00 committed by Federico Ressi
parent 3080db6bff
commit 3968bf6c36
1 changed files with 25 additions and 4 deletions

View File

@ -71,12 +71,25 @@ def load_undercloud_rcfile() -> typing.Dict[str, str]:
return fetch_os_env(*CONF.tobiko.tripleo.undercloud_rcfile)
class UndercloudKeystoneCredentialsFixture(
class EnvironUndercloudKeystoneCredentialsFixture(
keystone.EnvironKeystoneCredentialsFixture):
def get_environ(self) -> typing.Dict[str, str]:
return load_undercloud_rcfile()
class CloudsFileUndercloudKeystoneCredentialsFixture(
keystone.CloudsFileKeystoneCredentialsFixture):
def __init__(self, credentials=None, cloud_name=None,
clouds_content=None, clouds_file=None, clouds_files=None):
cloud_name = cloud_name or load_undercloud_rcfile()['OS_CLOUD']
super(CloudsFileUndercloudKeystoneCredentialsFixture, self).__init__(
credentials=credentials, cloud_name=cloud_name,
clouds_content=clouds_content, clouds_file=clouds_file,
clouds_files=clouds_files)
class HasUndercloudFixture(tobiko.SharedFixture):
has_undercloud: typing.Optional[bool] = None
@ -142,11 +155,19 @@ def undercloud_keystone_client():
return keystone.get_keystone_client(session=session)
def _get_keystone_credentials():
environ = load_undercloud_rcfile()
if 'OS_CLOUD' in environ:
credentials = CloudsFileUndercloudKeystoneCredentialsFixture
else:
credentials = EnvironUndercloudKeystoneCredentialsFixture
return credentials
def undercloud_keystone_session():
return keystone.get_keystone_session(
credentials=UndercloudKeystoneCredentialsFixture)
credentials=_get_keystone_credentials())
def undercloud_keystone_credentials():
return tobiko.setup_fixture(
UndercloudKeystoneCredentialsFixture).credentials
return tobiko.setup_fixture(_get_keystone_credentials()).credentials