Source code for stacker.status
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
from builtins import object
import operator
[docs]class Status(object):
def __init__(self, name, code, reason=None):
self.name = name
self.code = code
self.reason = reason or getattr(self, "reason", None)
def _comparison(self, operator, other):
if hasattr(other, "code"):
return operator(self.code, other.code)
return NotImplemented
def __eq__(self, other):
return self._comparison(operator.eq, other)
def __ne__(self, other):
return self._comparison(operator.ne, other)
def __lt__(self, other):
return self._comparison(operator.lt, other)
def __gt__(self, other):
return self._comparison(operator.gt, other)
def __le__(self, other):
return self._comparison(operator.le, other)
def __ge__(self, other):
return self._comparison(operator.ge, other)
[docs]class PendingStatus(Status):
def __init__(self, reason=None):
super(PendingStatus, self).__init__("pending", 0, reason)
[docs]class SubmittedStatus(Status):
def __init__(self, reason=None):
super(SubmittedStatus, self).__init__("submitted", 1, reason)
[docs]class CompleteStatus(Status):
def __init__(self, reason=None):
super(CompleteStatus, self).__init__("complete", 2, reason)
[docs]class SkippedStatus(Status):
def __init__(self, reason=None):
super(SkippedStatus, self).__init__("skipped", 3, reason)
[docs]class FailedStatus(Status):
def __init__(self, reason=None):
super(FailedStatus, self).__init__("failed", 4, reason)
[docs]class NotSubmittedStatus(SkippedStatus):
reason = "disabled"
[docs]class NotUpdatedStatus(SkippedStatus):
reason = "locked"
[docs]class DidNotChangeStatus(SkippedStatus):
reason = "nochange"
[docs]class StackDoesNotExist(SkippedStatus):
reason = "does not exist in cloudformation"
PENDING = PendingStatus()
WAITING = PendingStatus(reason="waiting")
SUBMITTED = SubmittedStatus()
COMPLETE = CompleteStatus()
SKIPPED = SkippedStatus()
FAILED = FailedStatus()
INTERRUPTED = FailedStatus(reason="interrupted")