43 lines
1.3 KiB
Plaintext
43 lines
1.3 KiB
Plaintext
Logger = system.util.getLogger("alarm.summary")
|
|
|
|
def get_severity_style(level):
|
|
'''
|
|
level: Could be an int (1-4) or a string ("low", "Medium", etc)
|
|
'''
|
|
# 1. Maping names and values to normalize the input
|
|
name_to_level = {
|
|
'diagnostic':0, 'low':1, 'medium':2, 'high':3, 'critical':4
|
|
}
|
|
# 2. Convert a string to compare, if its a string or a number
|
|
normalized_level = level
|
|
if isinstance(level, basestring):
|
|
normalized_level = name_to_level.get(level.lower(), 0)
|
|
|
|
# 3. color definition
|
|
priorityBGColors = {1:"#7266B7", 2:"#F4B834", 3:"#DE7C33", 4:"#E22028"}
|
|
priorityTextColors = {1:"#FAFAFB", 2:"#FAFAFB", 3:"#FAFAFB", 4:"#FAFAFB"}
|
|
|
|
# 4. Return an object with the syle
|
|
if normalized_level not in priorityBGColors:
|
|
return {}
|
|
return {
|
|
"backgroundColor": priorityBGColors[normalized_level],
|
|
"color": priorityTextColors[normalized_level]
|
|
}
|
|
|
|
def getTop3Alarms():
|
|
res= []
|
|
activeAlarms = system.alarm.queryStatus(state=["ActiveUnacked"])
|
|
sortedAlarms = sorted(activeAlarms, key=lambda x: x.getPriority(), reverse=True)
|
|
for alm in sortedAlarms[:3]:
|
|
prio = str(alm.getPriority())
|
|
activeData = alm.getActiveData()
|
|
label = activeData.get(EventTime) # O alm.get('label')
|
|
res.append({
|
|
"value": {
|
|
"dispPath": alm.getDisplayPathOrSource(),
|
|
"label": alm.get("label")
|
|
},
|
|
"style": get_severity_style(prio)
|
|
})
|
|
return res |