www/printbadnodes.py
[monitor.git] / www / runlevels.py
1 #!/usr/bin/python
2
3 import cgi
4 import cgitb; 
5 from monitor import database
6 import time
7 cgitb.enable()
8
9 from HyperText.HTML import A, BR, IMG, TABLE, TR, TH, TD, EM, quote_body
10 from HyperText.Documents import Document
11 print "Content-Type: text/html\r\n"
12
13 form = cgi.FieldStorage()
14
15
16 def get_value(val):
17         
18         if form.has_key(val):
19                 retvalue = form.getvalue(val)
20         else:
21                 retvalue = None
22         
23         return retvalue
24
25 vals = {}
26 vals['ssh'] = get_value('ssh')
27 vals['state'] = get_value('state')
28 vals['nm'] = get_value('nm')
29 vals['princeton_comon'] = get_value('princeton_comon')
30 vals['princeton_comon_running'] = get_value('princeton_comon_running')
31 vals['princeton_comon_procs'] = get_value('princeton_comon_procs')
32
33
34 rows = ""
35 fb = database.dbLoad("findbad")
36 packed_values = []
37 for mynode in fb['nodes'].keys():
38         fbnode = fb['nodes'][mynode]['values']
39         row = []
40         row.append(mynode)
41         add=True
42         for key in ['ssh', 'state', 'nm', 'princeton_comon', 'princeton_comon_running', 'princeton_comon_procs']:
43                 if key not in fbnode: 
44                         row.append('nokey')
45                 else:
46                         if vals[key] and vals[key] == fbnode[key]:
47                                 add = True & add
48                         elif not vals[key]:
49                                 add = True & add
50                         else:
51                                 add = False
52
53                         row.append(fbnode[key])
54
55         if add:
56                 packed_values.append(row)
57         
58
59 def rowcmp(x,y):
60         for i in range(1,len(x)):
61                 if x[i] == y[i]: continue
62                 if x[i] < y[i]: return -1
63                 if x[i] > y[i]: return 1
64
65         return 0
66
67 packed_values.sort(rowcmp)
68
69 t = TABLE(border=1)
70 r = TR()
71 for value in ['num', 'host', 'ssh', 'state', 'NM', 'comon<br>dir', 'comon<br>vserver', 'comon<br>procs']:
72         r.append(TD(value))
73 t.append(r)
74
75 i=1
76 for row in packed_values:
77         r = TR()
78         r.append(TD(i))
79         for value in row:
80                 r.append(TD(value))
81         i+=1 
82         t.append(r)
83                 
84 d = Document(t)
85 print d