X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=nodequery.py;h=16c0bad8a242d62cd81cad0845808a87738042c1;hb=refs%2Fheads%2F1.0;hp=b0303440e7f7b1a0c6e7723d3f21d38974f5ead0;hpb=89ea70205b043740317b8e67af62be8849b0239b;p=monitor.git diff --git a/nodequery.py b/nodequery.py index b030344..16c0bad 100755 --- a/nodequery.py +++ b/nodequery.py @@ -11,14 +11,15 @@ from unified_model import Record import glob import os from reboot import pcu_name +import reboot import util.file import time import re #fb = {} -fb = database.dbLoad("findbad") -fbpcu = {} +fb = None +fbpcu = None class NoKeyException(Exception): pass @@ -45,7 +46,14 @@ def fb_print_nodeinfo(fbnode, hostname, fields=None): fbnode['kernel'] = fbnode['kernel'].split()[2] fbnode['boot_state'] = fbnode['plcnode']['boot_state'] - print "%(hostname)-39s | %(checked)11.11s | %(boot_state)5.5s| %(state)8.8s | %(ssh)5.5s | %(pcu)6.6s | %(bootcd)6.6s | %(category)8.8s | %(kernel)s" % fbnode + try: + if len(fbnode['nodegroups']) > 0: + fbnode['category'] = fbnode['nodegroups'][0] + except: + #print "ERROR!!!!!!!!!!!!!!!!!!!!!" + pass + + print "%(hostname)-45s | %(checked)11.11s | %(boot_state)5.5s| %(state)8.8s | %(ssh)5.5s | %(pcu)6.6s | %(bootcd)6.6s | %(category)8.8s | %(kernel)s" % fbnode else: format = "" for f in fields: @@ -142,7 +150,13 @@ def verify(constraints, data): #print "looking at key: %s" % key if key in data: value_re = re.compile(con[key]) - con_and_true = con_and_true & (value_re.search(data[key]) is not None) + if type([]) == type(data[key]): + local_or_true = False + for val in data[key]: + local_or_true = local_or_true | (value_re.search(val) is not None) + con_and_true = con_and_true & local_or_true + else: + con_and_true = con_and_true & (value_re.search(data[key]) is not None) elif key not in data: print "missing key %s" % key, pass @@ -179,10 +193,17 @@ def pcu_in(fbdata): return False def pcu_select(str_query, nodelist=None): + global fb + global fbpcu pcunames = [] nodenames = [] if str_query is None: return (nodenames, pcunames) + if fb is None: + fb = database.dbLoad("findbad") + if fbpcu is None: + fbpcu = database.dbLoad("findbadpcus") + #print str_query dict_query = query_to_dict(str_query) #print dict_query @@ -198,17 +219,19 @@ def pcu_select(str_query, nodelist=None): nodenames.append(node) str = "cmdhttps/locfg.pl -s %s -f iloxml/License.xml -u %s -p '%s' | grep MESSAGE" % \ (pcu_name(pcuinfo), pcuinfo['username'], pcuinfo['password']) - pcunames.append(str) + #pcunames.append(str) + pcunames.append(pcuinfo['pcu_id']) return (nodenames, pcunames) def node_select(str_query, nodelist=None, fbdb=None): + global fb + hostnames = [] if str_query is None: return hostnames #print str_query dict_query = query_to_dict(str_query) #print dict_query - global fb if fbdb is not None: fb = fbdb @@ -280,6 +303,7 @@ def main(): fb = database.dbLoad("findbad") fbpcu = database.dbLoad("findbadpcus") + reboot.fb = fbpcu if config.nodelist: nodelist = util.file.getListFromFile(config.nodelist) @@ -288,10 +312,10 @@ def main(): pculist = None if config.select is not None and config.pcuselect is not None: - nodelist = node_select(config.select, nodelist) + nodelist = node_select(config.select, nodelist, fb) nodelist, pculist = pcu_select(config.pcuselect, nodelist) elif config.select is not None: - nodelist = node_select(config.select, nodelist) + nodelist = node_select(config.select, nodelist, fb) elif config.pcuselect is not None: nodelist, pculist = pcu_select(config.pcuselect, nodelist)