www/printbadnodes.py
[monitor.git] / www / printbadnodes.py
index 0c94595..3bfc7bd 100755 (executable)
@@ -1,13 +1,12 @@
 #!/usr/bin/python
-import soltesz
-from config import config
-from optparse import OptionParser
+from monitor import database
+from monitor import config
 import string
-
 import sys
 
 categories = {}
 ssherror = False
+fb = {}
 
 def sec2days(sec):
        if sec == "null":
@@ -144,9 +143,32 @@ def ssh_error_to_str(str):
 
        return ssh_error
 
+def pcu_state(pcu_id):
+       global fb
+
+       if 'nodes' in fb and "id_%s" % pcu_id in fb['nodes'] \
+               and 'values' in fb['nodes']["id_%s" % pcu_id]:
+               rec = fb['nodes']["id_%s" % pcu_id]['values']
+               if 'reboot' in rec:
+                       rb = rec['reboot']
+                       if rb == 0 or rb == "0":
+                               return 0
+                       elif "NetDown" == rb  or "Not_Run" == rb:
+                               return 1
+                       else:
+                               return -1
+               else:
+                       return -1
+       else:
+               return -1 
+
 def fields_to_html(fields, vals):
        global categories
        global ssherror
+       pcu_colorMap = { -1 : 'indianred',
+                                         0 : 'darkseagreen',
+                                         1 : 'gold', }
+
        colorMap = { 'PING'  : 'darkseagreen',
                                 'NOPING': 'darksalmon',
                                 'SSH': 'darkseagreen',
@@ -199,6 +221,10 @@ def fields_to_html(fields, vals):
                                r_str += "<td %s>%s</td>" % (bgcolor, f)
                elif f == 'PCU':
                        if len(vals['plcnode']['pcu_ids']) > 0:
+                               #print "pcu_id: %s<br>" % vals['plcnode']['pcu_ids'][0]
+                               #print "state: %s<br>" % pcu_state(vals['plcnode']['pcu_ids'][0])
+                               #print "color: %s<br>" % pcu_colorMap[pcu_state(vals['plcnode']['pcu_ids'][0])]
+                               bgcolor = "bgcolor='%s'" % pcu_colorMap[pcu_state(vals['plcnode']['pcu_ids'][0])]
                                url = "<a href='/cgi-bin/printbadpcus.php#id%s'>PCU</a>" % vals['plcnode']['pcu_ids'][0]
                                r_str += "<td nowrap %s>%s</td>" % (bgcolor, url)
                else:
@@ -211,7 +237,10 @@ def fields_to_html(fields, vals):
 
 
 def main(sitefilter, catfilter, statefilter, comonfilter, nodeonlyfilter):
-       db = soltesz.dbLoad(config.dbname)
+       global fb
+
+       db = database.dbLoad(config.dbname)
+       fb = database.dbLoad("findbadpcus")
 
        ## Field widths used for printing
        maxFieldLengths = { 'nodename' : -45,
@@ -465,30 +494,16 @@ if __name__ == '__main__':
        else:
                mynodeonly = None
 
-       parser = OptionParser()
-       parser.set_defaults(cmpdays=False, 
-                                               comon="sshstatus", 
-                                               fields="nodename,ping,ssh,pcu,category,state,comonstats,kernel,bootcd", 
-                                               dbname="findbad", # -070724-1", 
-                                               cmpping=False, 
-                                               cmpdns=False, 
-                                               cmploginbase=False, 
-                                               cmpssh=False, 
-                                               cmpcategory=False,
-                                               cmpstate=False)
-       parser.add_option("", "--fields",       dest="fields", help="")
-       parser.add_option("", "--dbname",       dest="dbname", help="")
-       parser.add_option("", "--days",         dest="cmpdays", action="store_true", help="")
-       parser.add_option("", "--ping",         dest="cmpping", action="store_true", help="")
-       parser.add_option("", "--dns",          dest="cmpdns", action="store_true", help="")
-       parser.add_option("", "--ssh",          dest="cmpssh",  action="store_true", help="")
-       parser.add_option("", "--loginbase",dest="cmploginbase",action="store_true", help="")
-       parser.add_option("", "--category",     dest="cmpcategory", action="store_true", help="")
-       parser.add_option("", "--kernel",       dest="cmpkernel", action="store_true", help="")
-       parser.add_option("", "--state",        dest="cmpstate", action="store_true", help="")
-       parser.add_option("", "--comon",        dest="comon",   help="")
-       config = config(parser)
-       config.parse_args()
+       config.cmpdays=False
+       config.comon="sshstatus"
+       config.fields="nodename,ping,ssh,pcu,category,state,comonstats,kernel,bootcd"
+       config.dbname="findbad"
+       config.cmpping=False 
+       config.cmpdns=False
+       config.cmploginbase=False
+       config.cmpssh=False 
+       config.cmpcategory=False
+
        print "Content-Type: text/html\r\n"
        if mynodeonly == None:
                print "<html><body>\n"