Skip to content

Commit

Permalink
Ensure JSON isn't read on no HTTP response body
Browse files Browse the repository at this point in the history
This patch moves the json.loads(body) call in the
HTTP response handling to after the check for non-
200-300 return codes. This gets rid of the
ValueError exception raise when you hit, for instance,
a 400 or 404.

Also changes a number of logger.exception() calls to
logger.debug() calls, since some exceptions are expected
and should not be logged as exceptions per-se.

fixes LP bug#1067512

Change-Id: If66fb1846ddc19da5bc2f15c6e0dd09019a56932
  • Loading branch information
jaypipes committed Oct 17, 2012
1 parent fc4cbca commit a6102fe
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
14 changes: 7 additions & 7 deletions keystoneclient/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,13 @@ def request(self, url, method, **kwargs):
**request_kwargs)
self.http_log_resp(resp, body)

if resp.status in (400, 401, 403, 404, 408, 409, 413, 500, 501):
_logger.debug("Request returned failure status.")
raise exceptions.from_response(resp, body)
elif resp.status in (301, 302, 305):
# Redirected. Reissue the request to the new location.
return self.request(resp['location'], method, **kwargs)

if body:
try:
body = json.loads(body)
Expand All @@ -136,13 +143,6 @@ def request(self, url, method, **kwargs):
_logger.debug("No body was returned.")
body = None

if resp.status in (400, 401, 403, 404, 408, 409, 413, 500, 501):
_logger.exception("Request returned failure status.")
raise exceptions.from_response(resp, body)
elif resp.status in (301, 302, 305):
# Redirected. Reissue the request to the new location.
return self.request(resp['location'], method, **kwargs)

return resp, body

def _cs_request(self, url, method, **kwargs):
Expand Down
2 changes: 1 addition & 1 deletion keystoneclient/v2_0/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,9 @@ def authenticate(self):
self._extract_service_catalog(self.auth_url, raw_token)
return True
except (exceptions.AuthorizationFailure, exceptions.Unauthorized):
_logger.debug("Authorization Failed.")
raise
except Exception, e:
_logger.exception("Authorization Failed.")
raise exceptions.AuthorizationFailure("Authorization Failed: "
"%s" % e)

Expand Down

0 comments on commit a6102fe

Please sign in to comment.