3 from config import config
4 from optparse import OptionParser
5 from www.printbadnodes import *
9 db = soltesz.dbLoad(config.dbname)
11 ## Field widths used for printing
12 maxFieldLengths = { 'nodename' : -45,
22 ## create format string based on config.fields
25 for f in config.fields.split(','):
26 fields[f] = "%%(%s)%ds" % (f, maxFieldLengths[f])
27 for f in config.fields.split(','):
28 format += fields[f] + " "
36 #for nodename in l_nodes:
37 # if 'plcsite' in d_n[nodename]['values'] and \
38 # 'login_base' in d_n[nodename]['values']['plcsite']:
39 # loginbase = d_n[nodename]['values']['plcsite']['login_base']
40 # if loginbase not in bysite:
41 # bysite[loginbase] = []
42 # d_n[nodename]['values']['nodename'] = nodename
43 # bysite[loginbase].append(d_n[nodename]['values'])
45 # d2 was an array of [{node}, {}, ...]
46 # the bysite is a loginbase dict of [{node}, {node}]
48 for nodename in l_nodes:
49 vals=d_n[nodename]['values']
52 v['nodename'] = nodename
53 if 'plcsite' in vals and 'status' in vals['plcsite'] and vals['plcsite']['status'] == "SUCCESS":
54 site_string = "<b>%-20s</b> %2s nodes :: %2s of %4s slices" % ( \
55 vals['plcsite']['login_base'],
56 vals['plcsite']['num_nodes'],
57 vals['plcsite']['num_slices'],
58 vals['plcsite']['max_slices'])
59 v['site_string'] = site_string
62 #print "ERROR: ", nodename, vals, "<br>"
64 #site_string = "<b>UNKNOWN</b>"
71 elif config.cmpcategory:
72 d2.sort(cmp=cmpCategory)
77 elif config.cmpkernel:
80 d2.sort(cmp=cmpCategory)
84 site_string = row['site_string']
86 # convert uname values into a single kernel version string
88 kernel = vals['kernel'].split()
90 if kernel[0] == "Linux":
91 vals['kernel'] = kernel[2]
93 vals['ssherror'] = vals['kernel']
103 s = fields_to_html(fields, vals)
105 keys = categories.keys()
106 for cat in ['BOOT-ALPHA', 'BOOT-PROD', 'BOOT-OLDBOOTCD', 'DEBUG-ALPHA',
107 'DEBUG-PROD', 'DEBUG-OLDBOOTCD', 'DOWN-ERROR']:
110 keys = categories.keys()
111 for cat in ['BOOT-ALPHA', 'BOOT-PROD', 'BOOT-OLDBOOTCD', 'DEBUG-ALPHA',
112 'DEBUG-PROD', 'DEBUG-OLDBOOTCD', 'DOWN-ERROR']:
114 print "%d," % categories[cat],
117 if __name__ == '__main__':
118 parser = OptionParser()
119 parser.set_defaults(cmpdays=False,
121 fields="nodename,ping,ssh,pcu,category,state,kernel,bootcd",
122 dbname="findbad", # -070724-1",
127 parser.add_option("", "--fields", dest="dbname", help="")
128 parser.add_option("", "--dbname", dest="dbname", help="")
129 parser.add_option("", "--days", dest="cmpdays", action="store_true", help="")
130 parser.add_option("", "--ping", dest="cmpping", action="store_true", help="")
131 parser.add_option("", "--ssh", dest="cmpssh", action="store_true", help="")
132 parser.add_option("", "--category", dest="cmpcategory", action="store_true", help="")
133 parser.add_option("", "--kernel", dest="cmpkernel", action="store_true", help="")
134 parser.add_option("", "--state", dest="cmpstate", action="store_true", help="")
135 parser.add_option("", "--comon", dest="comon", help="")
136 config = config(parser)