changes for 3.0
[monitor.git] / nodehistory.py
index d09f01f..f68d7b9 100755 (executable)
@@ -1,8 +1,7 @@
 #!/usr/bin/python
 
 import plc
-import auth
-api = plc.PLC(auth.auth, auth.plc)
+api = plc.getAuthAPI()
 
 import database
 import reboot
@@ -24,17 +23,20 @@ def get_filefromglob(d, str):
        glob_str = "%s*.%s.pkl" % (d.strftime("%Y-%m-%d"), str)
        os.chdir(path)
        #print glob_str
-       file = glob.glob(glob_str)[0]
+       #file = glob.glob(glob_str)[0]
+       files = glob.glob(glob_str)
        #print "loading %s" % file
        os.chdir("..")
-       return file[:-4]
+       files_chng = [ file[:-4] for file in files ]
+       return files_chng
        #fb = archive.load(file[:-4])
 
 
 def fb_print_nodeinfo(fbnode, verbose, date=None):
        if verbose: print "              state |  ssh  |  pcu  | bootcd | category | kernel"
        if 'checked' in fbnode:
-               print "%11.11s " % diff_time(fbnode['checked']),
+               if date: print date,
+               #print "%11.11s " % diff_time(fbnode['checked']),
        else:
                if date: print date,
                else: print "Unknown",
@@ -44,9 +46,10 @@ def fb_print_nodeinfo(fbnode, verbose, date=None):
        else:
                fbnode['bootcd'] = "unknown"
        fbnode['state'] = color_boot_state(get_current_state(fbnode))
+       fbnode['boot_state'] = getvalue(fbnode, 'plcnode/boot_state')
        if len(fbnode['kernel'].split()) >= 3:
                fbnode['kernel'] = fbnode['kernel'].split()[2]
-       print "    %(state)5s | %(ssh)5.5s | %(pcu)5.5s | %(bootcd)6.6s | %(category)8.8s | %(kernel)s" % fbnode
+       print "    %(state)5s | %(boot_state)s | %(ssh)5.5s | %(pcu)5.5s | %(bootcd)6.6s | %(category)8.8s | %(kernel)s" % fbnode
 
 def pcu_print_info(pcuinfo, hostname):
        print "   Checked: ",
@@ -74,10 +77,9 @@ def pcu_print_info(pcuinfo, hostname):
                                (reboot.pcu_name(pcuinfo), pcuinfo['username'], pcuinfo['password'])
 
 def main():
-       from config import config
-       from optparse import OptionParser
+       import parser as parsermodule
 
-       parser = OptionParser()
+       parser = parsermodule.getParser()
        parser.set_defaults(node=None, fields='state', fromtime=None)
        parser.add_option("", "--node", dest="node", metavar="nodename.edu", 
                                                help="A single node name to add to the nodegroup")
@@ -85,8 +87,7 @@ def main():
                                                help="Which record field to extract from all files.")
        parser.add_option("", "--fromtime", dest="fromtime", metavar="YYYY-MM-DD",
                                                help="Specify a starting date from which to begin the query.")
-       config = config(parser)
-       config.parse_args()
+       config = parsermodule.parse_args(parser)
 
        path = "archive-pdb"
        archive = database.SPickle(path)
@@ -108,21 +109,22 @@ def main():
        verbose = 1
 
        while True:
-               file = get_filefromglob(d, "production.findbad")
-               #file = "%s.production.findbad" % d.strftime("%Y-%m-%d")
                
                try:
-                       fb = archive.load(file)
-                       if config.node in fb['nodes']:
-                               fb_nodeinfo  = fb['nodes'][config.node]['values']
-                               fb_print_nodeinfo(fb_nodeinfo, verbose, d.strftime("%Y-%m-%d"))
+                       for file in get_filefromglob(d, "production.findbad"):
+                               #file = get_filefromglob(d, "production.findbad")
+                               #file = "%s.production.findbad" % d.strftime("%Y-%m-%d")
+                               fb = archive.load(file)
+                               if config.node in fb['nodes']:
+                                       fb_nodeinfo  = fb['nodes'][config.node]['values']
+                                       fb_print_nodeinfo(fb_nodeinfo, verbose, d.strftime("%Y-%m-%d"))
+
+                               del fb
+                               verbose = 0
 
-                       del fb
-                       verbose = 0
                except KeyboardInterrupt:
                        sys.exit(1)
                except:
-                       #import traceback; print traceback.print_exc()
                        print d.strftime("%Y-%m-%d"), "No record"
 
                d = d + tdelta