diff options
author | Jamie Lennox <jlennox@redhat.com> | 2013-07-31 16:00:58 +1000 |
---|---|---|
committer | Jamie Lennox <jlennox@redhat.com> | 2013-08-12 14:19:23 +1000 |
commit | d454676cf8ed3f14d3cdcb40f79ad29ba5a3b758 (patch) | |
tree | e75aff1d769fd1846cb5483a848626bb7da7bf8d /keystoneclient/exceptions.py | |
parent | b7c6f604e7a89082cef41968697f9e7453eb309b (diff) | |
download | python-keystoneclient-d454676cf8ed3f14d3cdcb40f79ad29ba5a3b758.tar.gz |
Extract basic request call
Create a function out of the standard request call that handles common
headers like user agent and logging.
This makes future changes easier to digest.
Change-Id: Ia25f997df64efdce27c8fb815e544922940145c3
Diffstat (limited to 'keystoneclient/exceptions.py')
-rw-r--r-- | keystoneclient/exceptions.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/keystoneclient/exceptions.py b/keystoneclient/exceptions.py index 833b392..d3a7c32 100644 --- a/keystoneclient/exceptions.py +++ b/keystoneclient/exceptions.py @@ -4,6 +4,8 @@ Exception definitions. """ +from keystoneclient.openstack.common import jsonutils + class CommandError(Exception): pass @@ -143,7 +145,7 @@ _code_map = dict((c.http_status, c) for c in [BadRequest, ServiceUnavailable]) -def from_response(response, body): +def from_response(response, body=None): """ Return an instance of an ClientException or subclass based on an requests response. @@ -155,6 +157,12 @@ def from_response(response, body): raise exception_from_response(resp, resp.text) """ cls = _code_map.get(response.status_code, ClientException) + if body is None: + try: + body = jsonutils.loads(response.text) + except Exception: + body = response.text + if body: if hasattr(body, 'keys'): error = body[body.keys()[0]] |