X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=automate%2Fquery.py;fp=automate%2Fquery.py;h=835883e919d1bb10f1fff98a25b5abc060342941;hb=0fabfc8dbe8f1f2c0d12397e1bc8c6ed686fb5ed;hp=0000000000000000000000000000000000000000;hpb=d0e06b11cf33ded60e15f9c1ab81eeeba05d3c0a;p=monitor.git diff --git a/automate/query.py b/automate/query.py new file mode 100755 index 0000000..835883e --- /dev/null +++ b/automate/query.py @@ -0,0 +1,75 @@ +#!/usr/bin/python + +import csv +import sys +import os +import config +from glob import glob +import re +from cgi import parse_qs + +import vxargs +import parser as parsermodule + +from automate import * + +parser = parsermodule.getParser() +parser.set_defaults(nodelist=None, + outdir=None, + querystr=None, + simple=False, + run=False, + cmdfile=None,) + +parser.add_option("", "--nodelist", dest="nodelist", metavar="filename", + help="Read list of nodes from specified file") +parser.add_option("", "--outdir", dest="outdir", metavar="dirname", + help="Name of directory to place output") +parser.add_option("", "--query", dest="querystr", metavar="QUERY", + help="a simple query string: key=value") +parser.add_option("", "--simple", dest="simple", action="store_true", + help="display simple output") + +config = parsermodule.parse_args(parser) + +if config.outdir == None: + outdir="checkhosts" +else: + outdir=config.outdir + +nodelist = None +if config.nodelist is not None: + nodelist = config.getListFromFile(config.nodelist) + +if config.querystr == None: + queries = parse_qs("IP_SUBNET=127.0.0.1") +else: + queries = parse_qs(config.querystr) + #(key,query) = config.querystr.split("=") + +# Create a file list based on the provide nodelist or a simple pattern for all +# files in the given 'outdir' directory +filelist = None +if nodelist is not None: + filelist = [] + for node in nodelist: + filelist.append("%s/%s.out" % (outdir,node)) +else: + filelist = glob("%s/*.out" % outdir) + +for file in filelist: + vals = csv_to_hash(csv.reader(open(file,'r'))) + hostname = file[len(outdir):-4] + m = True + for key in queries.keys(): + q = re.compile(queries[key][0]) + if key in vals and q.match(vals[key]): + m=(m and True) + else: + m=(m and False) + + if m: + if config.simple: + print hostname, vals[key] + else: + print hostname, vals