0
0
Fork 0
mirror of https://github.com/alerta/alerta.git synced 2025-02-19 11:43:52 +00:00
alerta_alerta/alerta/common/severity_code.py

131 lines
3.1 KiB
Python
Raw Normal View History

2013-02-27 14:49:54 +00:00
"""
Possible alert severity codes.
2013-02-19 10:57:05 +00:00
See ITU-T perceived severity model M.3100 and CCITT Rec X.736
2013-02-19 23:21:50 +00:00
http://tools.ietf.org/html/rfc5674
2013-02-19 10:57:05 +00:00
http://www.itu.int/rec/T-REC-M.3100
http://www.itu.int/rec/T-REC-X.736-199201-I
2013-03-13 00:06:23 +00:00
ITU Perceived Severity syslog SEVERITY (Name)
Critical 1 (Alert)
Major 2 (Critical)
Minor 3 (Error)
Warning 4 (Warning)
Indeterminate 5 (Notice)
Cleared 5 (Notice)
2013-02-19 10:57:05 +00:00
"""
2013-04-09 18:19:47 +00:00
from alerta.common import status_code
2013-03-07 23:34:13 +00:00
2013-02-19 10:57:05 +00:00
CRITICAL_SEV_CODE = 1
MAJOR_SEV_CODE = 2
MINOR_SEV_CODE = 3
WARNING_SEV_CODE = 4
2013-03-07 23:34:13 +00:00
INDETER_SEV_CODE = 5
CLEARED_SEV_CODE = 5
2013-02-19 10:57:05 +00:00
NORMAL_SEV_CODE = 5
INFORM_SEV_CODE = 6
DEBUG_SEV_CODE = 7
AUTH_SEV_CODE = 8
UNKNOWN_SEV_CODE = 9
2013-02-27 14:49:54 +00:00
# NOTE: The display text in single quotes can be changed depending on preference.
# eg. CRITICAL = 'critical' or CRITICAL = 'CRITICAL'
CRITICAL = 'critical'
MAJOR = 'major'
MINOR = 'minor'
WARNING = 'warning'
2013-03-07 23:34:13 +00:00
INDETERMINATE = 'indeterminate'
CLEARED = 'cleared'
NORMAL = 'normal'
INFORM = 'informational'
DEBUG = 'debug'
AUTH = 'security'
UNKNOWN = 'unknown'
2013-04-15 15:28:54 +00:00
NOT_VALID = 'notValid'
2013-02-19 10:57:05 +00:00
2014-02-26 22:33:42 +00:00
ALL = [CRITICAL, MAJOR, MINOR, WARNING, INDETERMINATE, CLEARED, NORMAL, INFORM, DEBUG, AUTH, UNKNOWN, NOT_VALID]
2013-02-19 10:57:05 +00:00
2013-04-13 21:39:24 +00:00
MORE_SEVERE = 'moreSevere'
LESS_SEVERE = 'lessSevere'
NO_CHANGE = 'noChange'
2013-02-19 23:21:50 +00:00
_SEVERITY_MAP = {
2013-02-19 10:57:05 +00:00
CRITICAL: CRITICAL_SEV_CODE,
MAJOR: MAJOR_SEV_CODE,
MINOR: MINOR_SEV_CODE,
WARNING: WARNING_SEV_CODE,
2013-03-07 23:34:13 +00:00
INDETERMINATE: INDETER_SEV_CODE,
CLEARED: CLEARED_SEV_CODE,
2013-02-19 10:57:05 +00:00
NORMAL: NORMAL_SEV_CODE,
INFORM: INFORM_SEV_CODE,
DEBUG: DEBUG_SEV_CODE,
AUTH: AUTH_SEV_CODE,
UNKNOWN: UNKNOWN_SEV_CODE,
}
2013-02-27 18:10:44 +00:00
_ABBREV_SEVERITY_MAP = {
CRITICAL: 'Crit',
MAJOR: 'Majr',
MINOR: 'Minr',
WARNING: 'Warn',
2013-03-07 23:34:13 +00:00
INDETERMINATE: 'Ind ',
CLEARED: 'Clrd',
2013-02-27 18:10:44 +00:00
NORMAL: 'Norm',
INFORM: 'Info',
DEBUG: 'Dbug',
AUTH: 'Sec ',
UNKNOWN: 'Unkn',
}
_COLOR_MAP = {
CRITICAL: '\033[91m',
MAJOR: '\033[95m',
MINOR: '\033[93m',
WARNING: '\033[96m',
2013-03-07 23:34:13 +00:00
INDETERMINATE: '\033[92m',
CLEARED: '\033[92m',
2013-02-27 18:10:44 +00:00
NORMAL: '\033[92m',
INFORM: '\033[92m',
DEBUG: '\033[90m',
2013-03-07 23:34:13 +00:00
AUTH: '\033[90m',
UNKNOWN: '\033[90m',
2013-02-27 18:10:44 +00:00
}
ENDC = '\033[0m'
2013-02-19 10:57:05 +00:00
2013-02-27 14:49:54 +00:00
def is_valid(name):
return name in _SEVERITY_MAP
2013-02-19 10:57:05 +00:00
def name_to_code(name):
2013-03-08 12:07:33 +00:00
return _SEVERITY_MAP.get(name.lower(), UNKNOWN_SEV_CODE)
2013-02-27 14:49:54 +00:00
def parse_severity(name):
2013-03-05 13:50:06 +00:00
if name:
for severity in _SEVERITY_MAP:
if name.lower() == severity.lower():
return severity
2013-04-13 21:39:24 +00:00
return NOT_VALID
2013-03-07 18:28:44 +00:00
def trend(previous, current):
if name_to_code(previous) > name_to_code(current):
2013-04-13 21:39:24 +00:00
return MORE_SEVERE
2013-03-07 18:28:44 +00:00
elif name_to_code(previous) < name_to_code(current):
2013-04-13 21:39:24 +00:00
return LESS_SEVERE
2013-03-07 18:28:44 +00:00
else:
2013-04-13 21:39:24 +00:00
return NO_CHANGE
2013-03-07 18:28:44 +00:00
2013-04-09 23:08:32 +00:00
def status_from_severity(previous_severity, current_severity, current_status=None):
if current_severity in [NORMAL, CLEARED]:
return status_code.CLOSED
2013-04-13 21:39:24 +00:00
if trend(previous_severity, current_severity) == MORE_SEVERE:
return status_code.OPEN
2013-03-07 23:34:13 +00:00
return current_status
2013-03-07 18:28:44 +00:00