diff options
Diffstat (limited to 'snaps/openstack/os_credentials.py')
-rw-r--r-- | snaps/openstack/os_credentials.py | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/snaps/openstack/os_credentials.py b/snaps/openstack/os_credentials.py index fbecbfe..db8d18c 100644 --- a/snaps/openstack/os_credentials.py +++ b/snaps/openstack/os_credentials.py @@ -128,13 +128,34 @@ class OSCreds: raise OSCredsError('username, password, auth_url, and project_name' ' are required') - auth_url_tokens = self.auth_url.split('/') + self.auth_url = self.__scrub_auth_url() + + def __scrub_auth_url(self): + """ + As the Python APIs are have more stringent requirements around how the + auth_url is formed than the CLI, this method will scrub any version + from the end of + :return: + """ + auth_url_tokens = self.auth_url.rstrip('/').split('/') last_token = auth_url_tokens[len(auth_url_tokens) - 1] - if len(last_token) == 0: - last_token = auth_url_tokens[len(auth_url_tokens) - 2] + token_iters = len(auth_url_tokens) + if last_token.startswith('v'): + token_iters -= 1 + if self.identity_api_version == keystone_utils.V2_VERSION_NUM: + last_token = keystone_utils.V2_VERSION_STR + else: + last_token = 'v' + str(int(self.identity_api_version)) + + new_url = None + for ctr in range(0, token_iters): + if new_url: + new_url += '/' + auth_url_tokens[ctr] + else: + new_url = auth_url_tokens[ctr] + new_url += '/' + last_token - if not last_token.startswith('v'): - raise OSCredsError('auth_url last toke must start with \'v\'') + return new_url @property def __str__(self): |