X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=nodequery.py;h=1f41ceb1776f0c7614fcdd1b3ae2b8d333c450d1;hb=c9d06f3b274ecbc092a0b3eb1f5ceb6c0f734aad;hp=48a5f73abcf13ee803d00cd6e189e89be4714cc8;hpb=21f8190281cfb38c3e24dfba6c89420830435f1f;p=monitor.git diff --git a/nodequery.py b/nodequery.py index 48a5f73..1f41ceb 100755 --- a/nodequery.py +++ b/nodequery.py @@ -3,7 +3,7 @@ import sys from monitor import database -from nodecommon import * +from monitor.common import * from monitor.model import Record import glob import os @@ -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 @@ -256,7 +255,7 @@ def query_to_dict(query): def pcu_in(fbdata): #if 'plcnode' in fbdata: if 'plc_node_stats' in fbdata: - if 'pcu_ids' in fbdata['plc_node_stats']: + if fbdata['plc_node_stats'] and 'pcu_ids' in fbdata['plc_node_stats']: if len(fbdata['plc_node_stats']['pcu_ids']) > 0: return True return False @@ -270,24 +269,35 @@ 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 ] dict_query = query_to_dict(str_query) print "dict_query", dict_query - - for noderec in fbquery: - if nodelist is not None: - if noderec.hostname not in nodelist: continue - - fb_nodeinfo = noderec.to_dict() - if pcu_in(fb_nodeinfo): - pcurec = FindbadPCURecord.get_latest_by(plc_pcuid=get(fb_nodeinfo, 'plc_node_stats.pcu_ids')[0]).first() - if pcurec: - pcuinfo = pcurec.to_dict() - if verify(dict_query, pcuinfo): - nodenames.append(noderec.hostname) - pcunames.append(pcuinfo['plc_pcuid']) + print 'length %s' % len(fbpcuquery.all()) + + for pcurec in fbpcuquery: + pcuinfo = pcurec.to_dict() + if verify(dict_query, pcuinfo): + #nodenames.append(noderec.hostname) + #print 'appending %s' % pcuinfo['plc_pcuid'] + pcunames.append(pcuinfo['plc_pcuid']) + + #for noderec in fbquery: + # if nodelist is not None: + # if noderec.hostname not in nodelist: continue +# +# fb_nodeinfo = noderec.to_dict() +# if pcu_in(fb_nodeinfo): +# pcurec = FindbadPCURecord.get_latest_by(plc_pcuid=get(fb_nodeinfo, +# 'plc_node_stats.pcu_ids')[0]).first() +# if pcurec: +# pcuinfo = pcurec.to_dict() +# if verify(dict_query, pcuinfo): +# nodenames.append(noderec.hostname) +# pcunames.append(pcuinfo['plc_pcuid']) return (nodenames, pcunames) def node_select(str_query, nodelist=None, fb=None): @@ -372,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: @@ -404,7 +412,7 @@ 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) except: print traceback.print_exc() pass