X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=nodequery.py;h=48a5f73abcf13ee803d00cd6e189e89be4714cc8;hb=3f501b69f366b8b6c62d35d6aea4ebf5fa0f1192;hp=ff78b5894fca36460612462a1fb368914ed0a40d;hpb=8e90984231a680415cc3f6a60f008b3029ad4548;p=monitor.git diff --git a/nodequery.py b/nodequery.py index ff78b58..48a5f73 100755 --- a/nodequery.py +++ b/nodequery.py @@ -4,7 +4,7 @@ import sys from monitor import database from nodecommon import * -from unified_model import Record +from monitor.model import Record import glob import os import traceback @@ -13,11 +13,11 @@ import time import re import string -from monitor.pcu import reboot +from pcucontrol import reboot from monitor.wrapper import plc, plccache api = plc.getAuthAPI() -from monitor.database.info.model import FindbadNodeRecordSync, FindbadNodeRecord, session +from monitor.database.info.model import FindbadNodeRecordSync, FindbadNodeRecord, FindbadPCURecord, session from monitor import util from monitor import config @@ -75,10 +75,10 @@ def get(fb, path): indexes = path.split(".") values = fb for index in indexes: - if index in values: - values = values[index] - else: - raise NoKeyException(index) + if values and index in values: + values = values[index] + else: + raise NoKeyException(index) return values def verifyType(constraints, data): @@ -254,9 +254,10 @@ def query_to_dict(query): return ad def pcu_in(fbdata): - if 'plcnode' in fbdata: - if 'pcu_ids' in fbdata['plcnode']: - if len(fbdata['plcnode']['pcu_ids']) > 0: + #if 'plcnode' in fbdata: + if 'plc_node_stats' in fbdata: + if 'pcu_ids' in fbdata['plc_node_stats']: + if len(fbdata['plc_node_stats']['pcu_ids']) > 0: return True return False @@ -273,6 +274,7 @@ def pcu_select(str_query, nodelist=None): 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: @@ -280,13 +282,12 @@ def pcu_select(str_query, nodelist=None): 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]) - pcuinfo = pcurec.to_dict() - if verify(dict_query, pcuinfo): - nodenames.append(noderec.hostname) - str = "cmdhttps/locfg.pl -s %s -f iloxml/License.xml -u %s -p '%s' | grep MESSAGE" % \ - (reboot.pcu_name(pcuinfo), pcuinfo['username'], pcuinfo['password']) - pcunames.append(pcuinfo['plc_pcuid']) + 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):