# ----------------------------------
# Status
# ----------------------------------
UNDEFINED_STATUS = "?"

# ----------------------------------
# Monitors
# ----------------------------------
_MONITOR_STATUS_SUCCESS = "OK"
_MONITOR_STATUS_FAILURE = "FAIL"
_MONITOR_STATUS_SKIPPED = "SKIPPED"
_MONITOR_STATUS_ERROR = "ERROR"
_MONITOR_STATUS_EXPECTED_FAILURE = "EXPECTED FAILURE"
_MONITOR_STATUS_UNEXPECTED_SUCCESS = "UNEXPECTED SUCCESS"

_MONITOR_LEVEL_HIGH = "HIGH"
_MONITOR_LEVEL_NORMAL = "NORMAL"
_MONITOR_LEVEL_LOW = "LOW"


class MONITOR:
    class STATUS:
        SUCCESS = _MONITOR_STATUS_SUCCESS
        FAILURE = _MONITOR_STATUS_FAILURE
        SKIPPED = _MONITOR_STATUS_SKIPPED
        ERROR = _MONITOR_STATUS_ERROR
        EXPECTED_FAILURE = _MONITOR_STATUS_EXPECTED_FAILURE
        UNEXPECTED_SUCCESS = _MONITOR_STATUS_UNEXPECTED_SUCCESS

    class STATUSES:
        ALL = (
            _MONITOR_STATUS_SUCCESS,
            _MONITOR_STATUS_FAILURE,
            _MONITOR_STATUS_SKIPPED,
            _MONITOR_STATUS_ERROR,
            _MONITOR_STATUS_EXPECTED_FAILURE,
            _MONITOR_STATUS_UNEXPECTED_SUCCESS,
        )
        SUCCESSFUL = (
            _MONITOR_STATUS_SUCCESS,
            _MONITOR_STATUS_SKIPPED,
            _MONITOR_STATUS_EXPECTED_FAILURE,
            _MONITOR_STATUS_UNEXPECTED_SUCCESS,
        )
        ERROR = (_MONITOR_STATUS_FAILURE, _MONITOR_STATUS_ERROR)
        DEFAULT = UNDEFINED_STATUS

    class LEVEL:
        HIGH = _MONITOR_LEVEL_HIGH
        NORMAL = _MONITOR_LEVEL_NORMAL
        LOW = _MONITOR_LEVEL_LOW

    class LEVELS:
        ALL = (_MONITOR_LEVEL_HIGH, _MONITOR_LEVEL_NORMAL, _MONITOR_LEVEL_LOW)
        DEFAULT = _MONITOR_LEVEL_NORMAL

    DEFAULT_NAME = None
    DEFAULT_DESCRIPTION = ""
    DEFAULT_ORDER = 1


# ----------------------------------
# Actions
# ----------------------------------
_ACTION_STATUS_SUCCESS = "OK"
_ACTION_STATUS_ERROR = "ERROR"
_ACTION_STATUS_SKIPPED = "SKIPPED"


class ACTION:
    class STATUS:
        SUCCESS = _ACTION_STATUS_SUCCESS
        ERROR = _ACTION_STATUS_ERROR
        SKIPPED = _ACTION_STATUS_SKIPPED

    class STATUSES:
        ALL = (_ACTION_STATUS_SUCCESS, _ACTION_STATUS_ERROR, _ACTION_STATUS_SKIPPED)
        SUCCESSFUL = (_ACTION_STATUS_SUCCESS, _ACTION_STATUS_SKIPPED)
        ERROR = (_ACTION_STATUS_ERROR,)
        DEFAULT = UNDEFINED_STATUS

    DEFAULT_DESCRIPTION = ""


# ----------------------------------
# Steps
# ----------------------------------
_STEP_MONITORS = "MONITORS"
_STEP_MONITORS_FINISHED = "FINISHED ACTIONS"
_STEP_MONITORS_PASSED = "PASSED ACTIONS"
_STEP_MONITORS_FAILED = "FAILED ACTIONS"


class STEPS:
    MONITORS = _STEP_MONITORS
    MONITORS_FINISHED = _STEP_MONITORS_FINISHED
    MONITORS_PASSED = _STEP_MONITORS_PASSED
    MONITORS_FAILED = _STEP_MONITORS_FAILED
    ALL = (
        _STEP_MONITORS,
        _STEP_MONITORS_FINISHED,
        _STEP_MONITORS_PASSED,
        _STEP_MONITORS_FAILED,
    )
    MONITOR_RELATED = (_STEP_MONITORS,)
    ACTION_RELATED = (
        _STEP_MONITORS_FINISHED,
        _STEP_MONITORS_PASSED,
        _STEP_MONITORS_FAILED,
    )
