summaryrefslogtreecommitdiff
path: root/keystoneclient/generic
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-02-08 01:05:47 +0000
committerGerrit Code Review <review@openstack.org>2014-02-08 01:05:47 +0000
commitba102bbd56795b1e97a26877a514e7c1303d65d7 (patch)
tree2f1385403bd6f69cc4db0154c0af293853f34b12 /keystoneclient/generic
parent2a64a1b37b62bbc15ceb2b1696fa521e86d23f4d (diff)
parentde23a21ed80c6dda7b08a24519a96a8d9ad48f3e (diff)
downloadpython-keystoneclient-ba102bbd56795b1e97a26877a514e7c1303d65d7.tar.gz
Merge "refactor handling of extension list"
Diffstat (limited to 'keystoneclient/generic')
-rw-r--r--keystoneclient/generic/client.py36
1 files changed, 11 insertions, 25 deletions
diff --git a/keystoneclient/generic/client.py b/keystoneclient/generic/client.py
index ebaa619..ba3aecb 100644
--- a/keystoneclient/generic/client.py
+++ b/keystoneclient/generic/client.py
@@ -153,31 +153,17 @@ class Client(httpclient.HTTPClient):
headers={'Accept':
'application/json'})
if resp.status_code in (200, 204): # some cases we get No Content
- try:
- results = {}
- if 'extensions' in body:
- if 'values' in body['extensions']:
- # Parse correct format (per contract)
- for extension in body['extensions']['values']:
- alias, name = \
- self._get_extension_info(
- extension
- )
- results[alias] = name
- return results
- else:
- # Support incorrect, but prevalent format
- for extension in body['extensions']:
- alias, name = \
- self._get_extension_info(extension)
- results[alias] = name
- return results
- else:
- results['message'] = ("Unrecognized extensions "
- "response from %s" % url)
- return results
- except KeyError:
- raise exceptions.AuthorizationFailure()
+ if 'extensions' in body and 'values' in body['extensions']:
+ # Parse correct format (per contract)
+ extensions = body['extensions']['values']
+ elif 'extensions' in body:
+ # Support incorrect, but prevalent format
+ extensions = body['extensions']
+ else:
+ return dict(message=(
+ 'Unrecognized extensions response from %s' % url))
+
+ return dict(self._get_extension_info(e) for e in extensions)
elif resp.status_code == 305:
return self._check_keystone_extensions(resp['location'])
else: