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(_LE('Exception in string format operation')) for name, value in six.iteritems(kwargs): LOG.error(_LE("%(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)
class TooManyCapabilitiesMapFilesError(TripleoCommonException): msg_fmt = _("There cannot be more than one root template in a given plan.")
class MappingFileNotFoundError(TripleoCommonException): msg_fmt = _("The capabilities_map.yaml file was not found in the root" " of the plan.")
class HeatValidationFailedError(TripleoCommonException): msg_fmt = _("The plan failed to validate via the Heat service. %(msg)s")
class TooManyRootTemplatesError(TripleoCommonException): msg_fmt = _("There can only be up to one root template in a given plan.")
class PlanAlreadyExistsError(TripleoCommonException): msg_fmt = _("A plan with the name %(name)s already exists.")
class FileDoesNotExistError(TripleoCommonException): msg_fmt = _("A file with the name %(name)s does not exist.")
class PlanDoesNotExistError(TripleoCommonException): msg_fmt = _("A plan with the name %(name)s does not exist.")
class StackInUseError(TripleoCommonException): msg_fmt = _("Cannot delete a plan that has an associated stack.")