#!/usr/bin/python # Read in the act_* databases and print out a human readable version import sys import time import getopt import soltesz def fields_to_html(fields): colorMap = { 'PING' : 'darkseagreen', 'NOPING': 'darksalmon', 'SSH': 'darkseagreen', 'NOSSH': 'indianred', 'PCU': 'darkseagreen', 'NOPCU': 'lightgrey', 'OLDBOOTCD': 'crimson', 'DOWN': 'indianred', 'ALPHA': 'gold', 'ERROR': 'crimson', 'PROD': 'darkseagreen', 'DEBUG': 'darksalmon', 'DEBUG': 'darksalmon', 'BOOT': 'lightgreen'} r_str = "" for f in fields: if f in colorMap: bgcolor="bgcolor='%s'" % colorMap[f] else: bgcolor="" r_str += "%s" % (bgcolor, f) return r_str def rtTicketLink(rt_ticket): link = """RT #%s""" % (rt_ticket, rt_ticket) return link def main(): total_sites = 0 total_nodes = 0 total_restored = 0 total_down = 0 act_all = soltesz.dbLoad("act_all") plcdb_hn2lb = soltesz.dbLoad("plcdb_hn2lb") sickdb = {} sorted_keys = act_all.keys() sorted_keys.sort() for nodename in sorted_keys: diag_nodelist = act_all[nodename] if nodename in plcdb_hn2lb: lb = plcdb_hn2lb[nodename] if lb not in sickdb: sickdb[lb] = {} sickdb[lb][nodename] = diag_nodelist sorted_keys = sickdb.keys() sorted_keys.sort() print "" for loginbase in sorted_keys: nodedict = sickdb[loginbase] sort_nodekeys = nodedict.keys() sort_nodekeys.sort() print "", print "" total_sites += 1 for nodename in sort_nodekeys: total_nodes += 1 if len(act_all[nodename]) == 0: #print "" % (nodename) #print "" continue else: # print just the latest event event = act_all[nodename][0] fields = [] fields += [nodename] if 'time' in event: s_time=time.strftime("%Y/%m/%d %H:%M:%S", time.gmtime(event['time'])) fields += [s_time] if 'ticket_id' in event and event['ticket_id'] != "": link = rtTicketLink(event['ticket_id']) fields += [link] else: if 'found_rt_ticket' in event and event['found_rt_ticket'] != "": link = rtTicketLink(event['found_rt_ticket']) fields += [link] else: fields += ["No Known RT Ticket"] if event['action'] == "close_rt": total_restored += 1 else: total_down += 1 for f in ['category', 'action', 'stage', 'info']: if 'stage' in f and 'stage' in event and 'stage' in event['stage']: # truncate the stage_ part. event['stage'] = event['stage'][6:] if f in event: if type(event[f]) == type([]): fields += event[f] else: fields += [event[f]] else: fields += [" "] print "", print fields_to_html(fields), print "" print "
", print loginbase, print " 
%shas no events
" print "" print "" print "" print "" print "" print "" print "" print "" print "" % total_sites print "" % total_nodes print "" % total_restored print "" % total_down print "" print "
SitesNodesRestoredDown
%s%s%s%s
" if __name__ == '__main__': print "Content-Type: text/html\r\n" print "\n" main() print "\n"