Add details to connection error output

This commit is contained in:
Garrett Holmstrom
2015-06-24 18:21:40 -07:00
parent 6ec6e385cb
commit 38d8c56aec

View File

@@ -205,16 +205,26 @@ class BaseService(RegionConfigurableMixin):
return response
except requests.exceptions.ConnectionError as exc:
self.log.debug('connection error', exc_info=True)
if len(exc.args) > 0 and hasattr(exc.args[0], 'reason'):
raise ClientError(exc.args[0].reason)
else:
raise ClientError('connection error')
return self.__handle_connection_error(exc)
except requests.exceptions.HTTPError as exc:
return self.handle_http_error(response)
except requests.exceptions.RequestException as exc:
self.log.debug('request error', exc_info=True)
raise ClientError(exc)
def __handle_connection_error(self, err):
if isinstance(err, six.string_types):
msg = err
elif isinstance(err, Exception) and len(err.args) > 0:
if hasattr(err.args[0], 'reason'):
msg = err.args[0].reason
elif isinstance(err.args[0], Exception):
return self.__handle_connection_error(err.args[0])
msg = err.args[0]
else:
raise ClientError('connection error')
raise ClientError('connection error ({0})'.format(msg))
def handle_http_error(self, response):
self.log.debug('HTTP error', exc_info=True)
raise ServerError(response)