3 # Read in the act_* databases and print out a human readable version
11 def fields_to_html(fields):
12 colorMap = { 'PING' : 'darkseagreen',
13 'NOPING': 'darksalmon',
14 'SSH': 'darkseagreen',
16 'PCU': 'darkseagreen',
18 'OLDBOOTCD': 'crimson',
22 'PROD': 'darkseagreen',
23 'DEBUG': 'darksalmon',
24 'DEBUG': 'darksalmon',
29 bgcolor="bgcolor='%s'" % colorMap[f]
32 r_str += "<td nowrap %s>%s</td>" % (bgcolor, f)
36 def rtTicketLink(rt_ticket):
37 link = """<a href="https://rt.planet-lab.org/Ticket/Display.html?user=guest&pass=guest&id=%s">RT #%s</a>""" % (rt_ticket, rt_ticket)
47 act_all = soltesz.dbLoad("act_all")
48 plcdb_hn2lb = soltesz.dbLoad("plcdb_hn2lb")
51 sorted_keys = act_all.keys()
53 for nodename in sorted_keys:
54 diag_nodelist = act_all[nodename]
55 if nodename in plcdb_hn2lb:
56 lb = plcdb_hn2lb[nodename]
59 sickdb[lb][nodename] = diag_nodelist
61 sorted_keys = sickdb.keys()
63 print "<table width=80% border=1>"
64 for loginbase in sorted_keys:
65 nodedict = sickdb[loginbase]
66 sort_nodekeys = nodedict.keys()
68 print "<tr><td bgcolor=lightblue nowrap>",
70 print "</td><td colspan=5> </td>",
73 for nodename in sort_nodekeys:
75 if len(act_all[nodename]) == 0:
76 #print "<tr><td>%s</td>" % (nodename)
77 #print "<td>has no events</td></tr>"
80 # print just the latest event
81 event = act_all[nodename][0]
85 s_time=time.strftime("%Y/%m/%d %H:%M:%S",
86 time.gmtime(event['time']))
88 if 'ticket_id' in event and event['ticket_id'] != "":
89 link = rtTicketLink(event['ticket_id'])
92 if 'found_rt_ticket' in event and event['found_rt_ticket'] != "":
93 link = rtTicketLink(event['found_rt_ticket'])
96 fields += ["No Known RT Ticket"]
98 if event['action'] == "close_rt":
103 for f in ['category', 'action', 'stage', 'info']:
104 if 'stage' in f and 'stage' in event and 'stage' in event['stage']:
105 # truncate the stage_ part.
106 event['stage'] = event['stage'][6:]
108 if type(event[f]) == type([]):
116 print fields_to_html(fields),
122 print "<th>Sites</th>"
123 print "<th>Nodes</th>"
124 print "<th>Restored</th>"
125 print "<th>Down</th>"
129 print "<td>%s</td>" % total_sites
130 print "<td>%s</td>" % total_nodes
131 print "<td>%s</td>" % total_restored
132 print "<td>%s</td>" % total_down
139 if __name__ == '__main__':
140 print "Content-Type: text/html\r\n"
141 print "<html><body>\n"
143 print "</body></html>\n"