BOSWatch/includes/expressAlarm.py
f-kessler 81a146b78f Add files via upload
new function to support Express-Alarm
2017-09-19 20:55:59 +02:00

65 lines
2.2 KiB
Python

#!/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)