예제 #1
0
class TripleoCommonException(Exception):
    """Base Tripleo-Common Exception.

    To correctly use this class, inherit from it and define a 'msg_fmt'
    property. That msg_fmt will get printf'd with the keyword arguments
    provided to the constructor.
    """
    message = _("An unknown exception occurred.")

    def __init__(self, **kwargs):
        self.kwargs = kwargs

        try:
            self.message = self.msg_fmt % kwargs
        except KeyError:
            exc_info = sys.exc_info()
            # kwargs doesn't match a variable in the message
            # log the issue and the kwargs
            LOG.exception('Exception in string format operation')
            for name, value in kwargs.items():
                LOG.error("%(name)s: %(value)s", {
                    'name': name,
                    'value': value
                })  # noqa

            if _FATAL_EXCEPTION_FORMAT_ERRORS:
                raise_(exc_info[0], exc_info[1], exc_info[2])

    def __str__(self):
        return self.message

    def __deepcopy__(self, memo):
        return self.__class__(**self.kwargs)
예제 #2
0
class StackInUseError(TripleoCommonException):
    msg_fmt = _("Cannot delete a plan that has an associated stack.")
예제 #3
0
class HeatValidationFailedError(TripleoCommonException):
    msg_fmt = _("The plan failed to validate via the Heat service. %(msg)s")
예제 #4
0
class ContainerAlreadyExistsError(TripleoCommonException):
    msg_fmt = _("A container with the name %(name)s already exists.")