Merge "refactor handling of extension list"

This commit is contained in:
Jenkins
2014-02-08 01:05:47 +00:00
committed by Gerrit Code Review

View File

@@ -153,31 +153,17 @@ class Client(httpclient.HTTPClient):
headers={'Accept': headers={'Accept':
'application/json'}) 'application/json'})
if resp.status_code in (200, 204): # some cases we get No Content if resp.status_code in (200, 204): # some cases we get No Content
try: if 'extensions' in body and 'values' in body['extensions']:
results = {} # Parse correct format (per contract)
if 'extensions' in body: extensions = body['extensions']['values']
if 'values' in body['extensions']: elif 'extensions' in body:
# Parse correct format (per contract) # Support incorrect, but prevalent format
for extension in body['extensions']['values']: extensions = body['extensions']
alias, name = \ else:
self._get_extension_info( return dict(message=(
extension 'Unrecognized extensions response from %s' % url))
)
results[alias] = name return dict(self._get_extension_info(e) for e in extensions)
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()
elif resp.status_code == 305: elif resp.status_code == 305:
return self._check_keystone_extensions(resp['location']) return self._check_keystone_extensions(resp['location'])
else: else: