deb-glare/glare/common/exception.py

156 lines
4.7 KiB
Python

# Copyright 2016 OpenStack Foundation
# All Rights Reserved.
#
# 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 oslo_log import log as logging
import six
from glare.i18n import _
LOG = logging.getLogger(__name__)
class GlareException(Exception):
"""
Base Glare Exception
To correctly use this class, inherit from it and define
a 'message' property. That message will get printf'd
with the keyword arguments provided to the constructor.
"""
message = _("An unknown exception occurred")
def __init__(self, message=None, **kwargs):
if message:
self.message = message
self.kwargs = kwargs
if self.kwargs:
self.message = self.message % kwargs
LOG.error(self.message)
super(GlareException, self).__init__(self.message)
def __unicode__(self):
return six.text_type(self.message)
class BadRequest(GlareException):
message = _("Bad request")
class InvalidStatusTransition(BadRequest):
message = _("Transition status from %(orig)s to %(new)s was not valid")
class NotAcceptable(GlareException):
message = _("Not acceptable")
class InvalidGlobalAPIVersion(NotAcceptable):
message = _("Version %(req_ver)s is not supported by the API. Minimum "
"is %(min_ver)s and maximum is %(max_ver)s.")
class VersionNotFoundForAPIMethod(GlareException):
message = _("API version %(version)s is not supported on this method.")
class ApiVersionsIntersect(GlareException):
message = _("Version of %(name) %(min_ver) %(max_ver) intersects "
"with another versions.")
class Unauthorized(GlareException):
message = _('You are not authenticated')
class Forbidden(GlareException):
message = _("You are not authorized to complete this action.")
class PolicyException(Forbidden):
message = _("Policy check for %(policy_name)s "
"failed with user credentials.")
class NotFound(GlareException):
message = _("An object with the specified identifier was not found.")
class TypeNotFound(NotFound):
message = _("Glare type with name '%(name)s' was not found.")
class IncorrectArtifactType(GlareException):
message = _("Artifact type is incorrect: %(explanation)s")
class ArtifactNotFound(NotFound):
message = _("Artifact with type name '%(type_name)s' and id '%(id)s' was "
"not found.")
class RequestTimeout(GlareException):
message = _("The client did not produce a request within the time "
"that the server was prepared to wait.")
class Conflict(GlareException):
message = _("The request could not be completed due to a conflict "
"with the current state of the resource.")
class Gone(GlareException):
message = _("The requested resource is no longer available at the "
"server and no forwarding address is known.")
class PreconditionFailed(GlareException):
message = _("The precondition given in one or more of the request-header "
"fields evaluated to false when it was tested on the server.")
class RequestEntityTooLarge(GlareException):
message = _("The server is refusing to process a request because the "
"request entity is larger than the server is willing or "
"able to process.")
class RequestRangeNotSatisfiable(GlareException):
message = _("The request included a Range request-header field, and none "
"of the range-specifier values in this field overlap the "
"current extent of the selected resource, and the request "
"did not include an If-Range request-header field.")
class Locked(GlareException):
message = _('The resource is locked.')
class FailedDependency(GlareException):
message = _('The method could not be performed because the requested '
'action depended on another action and that action failed.')
class UnsupportedMediaType(GlareException):
message = _("Unsupported media type.")
class SIGHUPInterrupt(GlareException):
message = _("System SIGHUP signal received.")
class WorkerCreationFailure(GlareException):
message = _("Server worker creation failed: %(reason)s.")