X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=nodequery.py;h=e9001a6e20a57eb62fe9eea1b977d51415e998eb;hb=refs%2Fheads%2F2.0;hp=dfe3f9580babb483330780e48cbb47480bcd9616;hpb=2ecb77e4a1817ecc7ce62dd59fefbb701eac6a83;p=monitor.git diff --git a/nodequery.py b/nodequery.py index dfe3f95..e9001a6 100755 --- a/nodequery.py +++ b/nodequery.py @@ -13,11 +13,10 @@ import time import re import string -from pcucontrol import reboot from monitor.wrapper import plc, plccache api = plc.getAuthAPI() -from monitor.database.info.model import FindbadNodeRecordSync, FindbadNodeRecord, FindbadPCURecord, session +from monitor.database.info.model import FindbadNodeRecord, FindbadPCURecord, session from monitor import util from monitor import config @@ -270,6 +269,8 @@ def pcu_select(str_query, nodelist=None): fbquery = FindbadNodeRecord.get_all_latest() fb_nodelist = [ n.hostname for n in fbquery ] if True: + # NOTE: this doesn't work when there are only a few records current. + # pcu_select should apply to all pcus globally, not just the most recent records. fbpcuquery = FindbadPCURecord.get_all_latest() fbpcu_list = [ p.plc_pcuid for p in fbpcuquery ] @@ -381,8 +382,6 @@ def main(): #fbnodes = FindbadNodeRecord.select(FindbadNodeRecord.q.hostname, orderBy='date_checked',distinct=True).reversed() fb = None - #reboot.fb = fbpcu - if config.nodelist: nodelist = util.file.getListFromFile(config.nodelist) else: @@ -413,13 +412,14 @@ def main(): try: # Find the most recent record - fb_noderec = FindbadNodeRecord.query.filter(FindbadNodeRecord.hostname==node).order_by(FindbadNodeRecord.date_checked.desc()).first() + fb_noderec = FindbadNodeRecord.get_latest_by(hostname=node) + if not fb_noderec: continue + fb_nodeinfo = fb_noderec.to_dict() 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 @@ -432,7 +432,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(",")