Skip to content

Instantly share code, notes, and snippets.

@stevenhair
Created April 29, 2015 20:00
Show Gist options
  • Save stevenhair/f92c0545aa119b4b0f69 to your computer and use it in GitHub Desktop.
Save stevenhair/f92c0545aa119b4b0f69 to your computer and use it in GitHub Desktop.
import csv
import re
from glob import glob
class alarm_list:
def __init__(self):
self.alarms = {}
self.count = 0
def add_processor(self, proc):
self.alarms[proc] = {}
def add_alarm(self, proc, tag, msg):
self.alarms[proc][tag] = msg
self.count += 1
def generate_file(self, filename):
triggers = []
messages = []
alarm_num = 0
for proc, alm in self.alarms.items():
print("Generating tags for {}...".format(proc))
for tag, msg in alm.items():
alarm_num = alarm_num + 1
triggers.append('\t\t\t<trigger id="T%d" type="value" ack-all-value="0" use-ack-all="false" ack-tag="" exp="{[%s]%s}" message-tag="" message-handshake-exp="" message-notification-tag="" remote-ack-exp="" remote-ack-handshake-tag="" label="Label%d" handshake-tag=""/>\n' % (alarm_num, proc, tag, alarm_num))
messages.append('\t\t\t<message id="M%d" trigger-value="1" trigger="#T%d" backcolor="#800000" forecolor="#FFFFFF" audio="false" display="true" print="false" message-to-tag="false" text="%s"/>\n' % (alarm_num, alarm_num, msg))
print("Writing {} alarms to {}...".format(self.count, filename))
with open(filename, 'w') as file:
file.write('<?xml version="1.0" encoding="UTF-8"?>\n<alarms version="1.0" product="{E44CB020-C21D-11D3-8A3F-0010A4EF3494}" id="Alarms">\n\t<alarm history-size="128" display-name="[ALARM]" hold-time="250" max-update-rate="1.00" silence-tag="" remote-silence-exp="" remote-ack-all-exp="" status-reset-tag="" remote-status-reset-exp="" close-display-tag="" remote-close-display-exp="">\n\t\t<triggers>\n')
for trigger in triggers:
file.write(trigger)
file.write('\t\t\t</triggers>\n\t\t\t<messages>\n')
for message in messages:
file.write(message)
file.write('\t\t</messages>\n\t</alarm>\n</alarms>')
if __name__ == "__main__":
alm_list = alarm_list()
outfilename = "alarms.xml"
# get a list of the csv files
file_list = glob("*.csv")
for file_name in file_list:
# set processor name (assuming filename format <Processor Name>-Tags.CSV)
proc = file_name.replace("-Tags.CSV","")
alm_list.add_processor(proc)
with open(file_name, 'r') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
if row[0] == "TAG" and re.match("^AB_", row[2]):
alm_list.add_alarm(proc, row[2], row[3])
alm_list.generate_file(outfilename)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment