diff options
author | spisarski <s.pisarski@cablelabs.com> | 2017-07-28 14:41:25 -0600 |
---|---|---|
committer | spisarski <s.pisarski@cablelabs.com> | 2017-07-31 13:36:54 -0600 |
commit | ce19be8891ef3f3e24800924a40f4480dec24bec (patch) | |
tree | 99d04d5ebc261ca1c798a0ba742a687c9375aebe /snaps/openstack/os_credentials.py | |
parent | c4eba6eaaa2f8e0a0ca40c40907fc9e04a65e6d9 (diff) |
Reformat auth_url based on the ID API version.
No longer raising an OSCredsError when the auth_url does
not end with a 'v' + some number. Additionally, the auth_url
will be massaged to remove any 'v' + num from the end of
the URL and generate its own version value based on the ID
API version configured.
JIRA: SNAPS-144
Change-Id: I3a7844025324105576da59b1516d0f541281e6bf
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
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): |