add links for length of query for nodescanhistory view
[monitor.git] / nodequery.py
index 1f41ceb..2fe0e4a 100755 (executable)
@@ -13,11 +13,11 @@ import time
 import re
 import string
 
-from monitor.wrapper import plc, plccache
+from monitor.wrapper import plc
 api = plc.getAuthAPI()
 
-from monitor.database.info.model import FindbadNodeRecord, FindbadPCURecord, session
-from monitor import util
+from monitor.database.info.model import HistoryNodeRecord, FindbadNodeRecord, FindbadPCURecord, session
+from monitor.util import file as utilfile
 from monitor import config
 
 
@@ -317,6 +317,9 @@ def node_select(str_query, nodelist=None, fb=None):
                        fb_noderec = None
                        #fb_noderec = FindbadNodeRecord.query.filter(FindbadNodeRecord.hostname==node).order_by(FindbadNodeRecord.date_checked.desc()).first()
                        fb_noderec = FindbadNodeRecord.get_latest_by(hostname=node)
+               except KeyboardInterrupt:
+                       print "Exiting at user request: Ctrl-C"
+                       sys.exit(1)
                except:
                        print traceback.print_exc()
                        continue
@@ -328,7 +331,6 @@ def node_select(str_query, nodelist=None, fb=None):
                        #if 'plcnode' in fb_nodeinfo:
                        #       fb_nodeinfo.update(fb_nodeinfo['plcnode'])
 
-                       #if verifyDBrecord(dict_query, fb_nodeinfo):
                        if verify(dict_query, fb_nodeinfo):
                                #print fb_nodeinfo.keys()
                                #print node #fb_nodeinfo
@@ -383,13 +385,12 @@ def main():
                fb = None
 
        if config.nodelist:
-               nodelist = util.file.getListFromFile(config.nodelist)
+               nodelist = utilfile.getListFromFile(config.nodelist)
        else:
                # NOTE: list of nodes should come from findbad db.   Otherwise, we
                # don't know for sure that there's a record in the db..
-               plcnodes = plccache.l_nodes
-               nodelist = [ node['hostname'] for node in plcnodes ]
-               #nodelist = ['planetlab-1.cs.princeton.edu']
+               fbquery = HistoryNodeRecord.query.all()
+               nodelist = [ n.hostname for n in fbquery ]
 
        pculist = None
        if config.select is not None and config.pcuselect is not None:
@@ -413,12 +414,16 @@ def main():
                try:
                        # Find the most recent record
                        fb_noderec = FindbadNodeRecord.get_latest_by(hostname=node) 
+                       if not fb_noderec: continue
+                       fb_nodeinfo = fb_noderec.to_dict()
+               except KeyboardInterrupt:
+                       print "Exiting at user request: Ctrl-C"
+                       sys.exit(1)
                except:
                        print traceback.print_exc()
-                       pass
+                       continue
 
                if config.listkeys:
-                       fb_nodeinfo = fb_noderec.to_dict()
                        print "Primary keys available in the findbad object:"
                        for key in fb_nodeinfo.keys():
                                print "\t",key
@@ -431,7 +436,6 @@ def main():
                        if config.daysdown:
                                daysdown_print_nodeinfo(fb_nodeinfo, node)
                        else:
-                               fb_nodeinfo = fb_noderec.to_dict()
                                if config.select:
                                        if config.fields:
                                                fields = config.fields.split(",")