diff --git a/includes/expressAlarm.py b/includes/expressAlarm.py new file mode 100644 index 0000000..03ca5d1 --- /dev/null +++ b/includes/expressAlarm.py @@ -0,0 +1,65 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +""" +expressAlarm is the function to enable BOSwatch to deal with Swissfone Express-Alarm + +@author: Fabian Kessler + +@requires: Configuration has to be set in the config.ini +""" + +import logging # Global logger +import time # timestamp for expressAlarm + +from includes import globalVars # Global variables + +expressList = [] + +def newEntryExpressList(eatyp, eapoc_id, eapoc_sub, eapoc_text): + """ + add entry to express alarm list and remove old entries + + @return: nothing + """ + global expressList + tmpexpressList = [] + timestamp = int(time.time()) + # Express-Alarm processing if enabled and delimiter RIC has been received + if eapoc_id == globalVars.config.get("ExpressAlarm", "expressAlarm_delimiter_ric"): + expressList = [] + logging.debug("Express-Alarm delimiter RIC received --> buffer cleared %s %s %s ", eapoc_id, eapoc_sub, eapoc_text) + else: + expressList.append([eatyp, eapoc_id, eapoc_sub, eapoc_text.strip(), timestamp]) + logging.debug("Added %s %s %s to expressList", eapoc_id, eapoc_sub, eapoc_text) + # check for old entries in expressList + for i in range(len(expressList)): + # we have to remove entries older than timestamp - ignore time + if int(expressList[i][4]) > timestamp-globalVars.config.getint("ExpressAlarm", "expressAlarm_ignore_time"): + tmpexpressList.append(expressList[i]) + expressList = tmpexpressList + + +def expressAlarmExec(typ, freq, data): + """ + call alarmHandler for every entry in expressList + + @return: nothing + """ + logging.debug("data before update from expressList: %s", data) + for i in range(len(expressList)): + #update with eapoc_id (RIC) + data['ric'] = expressList[i][1] + #update with eapoc_sub (Sub RIC) + data['function'] = expressList[i][2] + # Add function as character a-d to dataset (reused from includes/poc.py) + data["functionChar"] = data["function"].replace("1", "a").replace("2", "b").replace("3", "c").replace("4", "d") + #update with eapoc_id (RIC) + data['description'] = expressList[i][1] + logging.debug("data after update from expressList: %s", data) + try: + from includes import alarmHandler + alarmHandler.processAlarmHandler(typ, freq, data) + except: + logging.error("processing alarm failed") + logging.debug("processing alarm failed", exc_info=True) \ No newline at end of file