summaryrefslogtreecommitdiff
path: root/keystoneclient/exceptions.py
diff options
context:
space:
mode:
authorJamie Lennox <jlennox@redhat.com>2013-07-31 16:00:58 +1000
committerJamie Lennox <jlennox@redhat.com>2013-08-12 14:19:23 +1000
commitd454676cf8ed3f14d3cdcb40f79ad29ba5a3b758 (patch)
treee75aff1d769fd1846cb5483a848626bb7da7bf8d /keystoneclient/exceptions.py
parentb7c6f604e7a89082cef41968697f9e7453eb309b (diff)
downloadpython-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.py10
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]]