¡@

Home 

OpenStack Study: exception.py

OpenStack Index

**** CubicPower OpenStack Study ****

# vim: tabstop=4 shiftwidth=4 softtabstop=4

# Copyright 2011 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.

"""

Exceptions common to OpenStack projects

"""

import logging

from keystone.openstack.common.gettextutils import _ # noqa

_FATAL_EXCEPTION_FORMAT_ERRORS = False

**** CubicPower OpenStack Study ****

class Error(Exception):

**** CubicPower OpenStack Study ****

    def __init__(self, message=None):

        super(Error, self).__init__(message)

**** CubicPower OpenStack Study ****

class ApiError(Error):

**** CubicPower OpenStack Study ****

    def __init__(self, message='Unknown', code='Unknown'):

        self.api_message = message

        self.code = code

        super(ApiError, self).__init__('%s: %s' % (code, message))

**** CubicPower OpenStack Study ****

class NotFound(Error):

pass

**** CubicPower OpenStack Study ****

class UnknownScheme(Error):

msg_fmt = "Unknown scheme '%s' found in URI"

**** CubicPower OpenStack Study ****

    def __init__(self, scheme):

        msg = self.msg_fmt % scheme

        super(UnknownScheme, self).__init__(msg)

**** CubicPower OpenStack Study ****

class BadStoreUri(Error):

msg_fmt = "The Store URI %s was malformed. Reason: %s"

**** CubicPower OpenStack Study ****

    def __init__(self, uri, reason):

        msg = self.msg_fmt % (uri, reason)

        super(BadStoreUri, self).__init__(msg)

**** CubicPower OpenStack Study ****

class Duplicate(Error):

pass

**** CubicPower OpenStack Study ****

class NotAuthorized(Error):

pass

**** CubicPower OpenStack Study ****

class NotEmpty(Error):

pass

**** CubicPower OpenStack Study ****

class Invalid(Error):

pass

**** CubicPower OpenStack Study ****

class BadInputError(Exception):

"""Error resulting from a client sending bad input to a server"""

pass

**** CubicPower OpenStack Study ****

class MissingArgumentError(Error):

pass

**** CubicPower OpenStack Study ****

class DatabaseMigrationError(Error):

pass

**** CubicPower OpenStack Study ****

class ClientConnectionError(Exception):

"""Error resulting from a client connecting to a server"""

pass

**** CubicPower OpenStack Study ****

    def _wrap(*args, **kw):

        try:

            return f(*args, **kw)

        except Exception as e:

            if not isinstance(e, Error):

                logging.exception(_('Uncaught exception'))

                raise Error(str(e))

            raise

    _wrap.func_name = f.func_name

    return _wrap

**** CubicPower OpenStack Study ****

class OpenstackException(Exception):

"""Base Exception class.

To correctly use this class, inherit from it and

**** CubicPower OpenStack Study ****

    def __init__(self, **kwargs):

        try:

            self._error_string = self.msg_fmt % kwargs

        except Exception:

            if _FATAL_EXCEPTION_FORMAT_ERRORS:

                raise

            else:

                # at least get the core message out if something happened

                self._error_string = self.msg_fmt

**** CubicPower OpenStack Study ****

    def __str__(self):

        return self._error_string

**** CubicPower OpenStack Study ****

class MalformedRequestBody(OpenstackException):

msg_fmt = "Malformed message body: %(reason)s"

**** CubicPower OpenStack Study ****

class InvalidContentType(OpenstackException):

msg_fmt = "Invalid content type %(content_type)s"