def _process_error(self, method, url, status_code, response_data):
try:
jsonError = json.loads(response_data)
except ValueError as e:
self.__logger.warning("Failed to decode result. url:%s status:%s error:%s data:%s" % (url, status_code, e, response_data))
raise TintriServerError(status_code, cause=e, message="Failed to decode result. url:%s status:%s error:%s data:%s" % (url, status_code, e, response_data))
except Exception as e:
self.__logger.warning("HTTP request failed. URL:%s Status Code:%s Error:%s Text:%s" % (url, status_code, e, response_data))
raise TintriServerError(status_code, None, cause=`e`, details=response_data)
if type(jsonError) == types.DictionaryType:
self.__logger.info('Server error. url:%s status:%s code:%s message:%s cause:%s' % (url, status_code, jsonError['code'], jsonError['message'], jsonError['causeDetails']))
if status_code == 400:
raise TintriBadRequestError(jsonError['code'], jsonError['message'], jsonError['causeDetails'])
elif status_code == 401:
raise TintriInvalidSessionError(jsonError['code'], jsonError['message'], jsonError['causeDetails'])
elif status_code == 403:
raise TintriAuthorizationError(jsonError['code'], jsonError['message'], jsonError['causeDetails'])
elif status_code == 404:
raise TintriAPINotFoundError(jsonError['code'], jsonError['message'], jsonError['causeDetails'])
elif status_code == 500:
raise TintriInternalError(jsonError['code'], jsonError['message'], jsonError['causeDetails'])
else:
raise TintriServerError(status_code, code=jsonError['code'], message=jsonError['message'], details=jsonError['causeDetails'])
else:
self.__logger.info('Server error. url:%s status:%s Unknown error:%s' % (url, status_code, response_data))
raise TintriServerError(status_code, code=None, message='Unknown error', details=response_data)
评论列表
文章目录