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