68 lines
2.4 KiB
Python
Raw Normal View History

# Copyright 2011 OpenStack LLC
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from novaclient import exceptions
from novaclient.exceptions import UnsupportedVersion
from novaclient.exceptions import CommandError
from novaclient.exceptions import AuthorizationFailure
from novaclient.exceptions import NoUniqueMatch
from novaclient.exceptions import NoTokenLookupException
from novaclient.exceptions import EndpointNotFound
from novaclient.exceptions import AmbiguousEndpoints
from novaclient.exceptions import ClientException
from novaclient.exceptions import BadRequest
from novaclient.exceptions import Unauthorized
from novaclient.exceptions import Forbidden
from novaclient.exceptions import NotFound
from novaclient.exceptions import OverLimit
from novaclient.exceptions import HTTPNotImplemented
class UnprocessableEntity(exceptions.ClientException):
"""
HTTP 422 - Unprocessable Entity: The request cannot be processed.
"""
http_status = 422
message = "Unprocessable Entity"
_code_map = dict((c.http_status, c) for c in [UnprocessableEntity])
def from_response(response, body):
"""
Return an instance of an ClientException or subclass
based on an httplib2 response.
Usage::
resp, body = http.request(...)
if resp.status != 200:
raise exception_from_response(resp, body)
"""
cls = _code_map.get(response.status, None)
if not cls:
cls = exceptions._code_map.get(response.status,
exceptions.ClientException)
if body:
message = "n/a"
details = "n/a"
if hasattr(body, 'keys'):
error = body[body.keys()[0]]
message = error.get('message', None)
details = error.get('details', None)
return cls(code=response.status, message=message, details=details)
else:
return cls(code=response.status)