summaryrefslogtreecommitdiffstats
path: root/snaps/openstack/os_credentials.py
diff options
context:
space:
mode:
authorspisarski <s.pisarski@cablelabs.com>2017-07-28 14:41:25 -0600
committerspisarski <s.pisarski@cablelabs.com>2017-07-31 13:36:54 -0600
commitce19be8891ef3f3e24800924a40f4480dec24bec (patch)
tree99d04d5ebc261ca1c798a0ba742a687c9375aebe /snaps/openstack/os_credentials.py
parentc4eba6eaaa2f8e0a0ca40c40907fc9e04a65e6d9 (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.py31
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):