X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fetch.py;h=91b5715271274de61008b65b7de8aa8352337feb;hb=refs%2Fheads%2F1.0;hp=968ad660c4f2e7c6b19af5f5e636d7b2bcac6ff5;hpb=590ac12c941310b40a92d2fe938e62e3538f2893;p=monitor.git diff --git a/fetch.py b/fetch.py index 968ad66..91b5715 100755 --- a/fetch.py +++ b/fetch.py @@ -3,39 +3,12 @@ import csv import sys import os -import config from glob import glob import vxargs -from config import config -from optparse import OptionParser +import parser as parsermodule from automate import * -parser = OptionParser() -parser.set_defaults(nodelist=None, - node=None, - outdir=None, - querystr=None, - timeout=0, - 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("", "--node", dest="node", metavar="hostname", - help="specify a single node name.") -parser.add_option("", "--timeout", dest="timeout", metavar="seconds", - help="Number of seconds to wait before timing out on host.") -parser.add_option("", "--outdir", dest="outdir", metavar="dirname", - help="Name of directory to place output") -parser.add_option("", "--cmd", dest="cmdfile", metavar="filename", - help="Name of file that contains a unix-to-csv command " + \ - "to run on the hosts.") - -config = config(parser) -config.parse_args() - def build_vx_args(shell_cmd): ssh_options="-q -o UserKnownHostsFile=junkssh -o StrictHostKeyChecking=no" cmd="""ssh %s root@{} """ % ssh_options @@ -43,37 +16,64 @@ def build_vx_args(shell_cmd): args.append(shell_cmd) return args -def vx_start(filelist,outdir,cmd): +def vx_start(filelist,outdir,cmd, timeout=0): args = build_vx_args(cmd) - #vxargs.start(None, 10, filelist, outdir, False, args, 120) - vxargs.start(None, 10, filelist, outdir, False, args, int(config.timeout)) + vxargs.start(None, 20, filelist, outdir, False, args, timeout) + +if __name__ == "__main__": + + parser = parsermodule.getParser(['nodesets']) + parser.set_defaults(outdir=None, + timeout=0, + simple=False, + run=False, + cmdfile=None,) + + parser.add_option("", "--timeout", dest="timeout", metavar="seconds", + help="Number of seconds to wait before timing out on host.") + parser.add_option("", "--outdir", dest="outdir", metavar="dirname", + help="Name of directory to place output") + parser.add_option("", "--cmd", dest="cmdfile", metavar="filename", + help="Name of file that contains a unix-to-csv command " + \ + "to run on the hosts.") + + config = parsermodule.parse_args(parser) + + if config.outdir == None: + outdir="checkhosts" + else: + outdir=config.outdir + + if not os.path.exists(outdir): + os.system('mkdir -p %s' % outdir) -if config.outdir == None: - outdir="checkhosts" -else: - outdir=config.outdir + if config.site is not None or \ + config.nodeselect is not None or \ + config.nodegroup is not None: + print "TODO: implement support for nodeselect and site queries." + print "%s %s %s" % (config.site, config.nodeselect, config.nodegroup) + sys.exit(1) -if not os.path.exists(outdir): - os.system('mkdir -p %s' % outdir) + if config.nodelist == None and config.node == None: + filelist="nocomon.txt" + filelist = vxargs.getListFromFile(open(filelist,'r')) + elif os.path.exists(str(config.nodelist)) and os.path.isfile(config.nodelist): + filelist = vxargs.getListFromFile(open(config.nodelist,'r')) + elif os.path.exists(str(config.nodelist)) and os.path.isdir(config.nodelist): + filelist = get_hostlist_from_dir(config.nodelist) + elif config.node is not None: + filelist = [(config.node, '')] + else: + # probably no such file. + raise Exception("No such file %s" % config.nodelist) -if config.nodelist == None and config.node == None: - filelist="nocomon.txt" - filelist = vxargs.getListFromFile(open(filelist,'r')) -elif os.path.exists(str(config.nodelist)) and os.path.isfile(config.nodelist): - filelist = vxargs.getListFromFile(open(config.nodelist,'r')) -elif os.path.exists(str(config.nodelist)) and os.path.isdir(config.nodelist): - filelist = get_hostlist_from_dir(config.nodelist) -elif config.node is not None: - filelist = [(config.node, '')] -else: - # probably no such file. - raise Exception("No such file %s" % config.nodelist) + if config.cmdfile == None: + f = open("command.txt",'r') + cmd = f.read() + else: + f = open(config.cmdfile,'r') + cmd = f.read() -if config.cmdfile == None: - f = open("command.txt",'r') - cmd = f.read() -else: - f = open(config.cmdfile,'r') - cmd = f.read() + print filelist -vx_start(filelist, outdir, cmd) + vx_start(filelist, outdir, cmd, int(config.timeout))