9 from monitor import parser as parsermodule
10 from automate import *
12 def build_vx_args(shell_cmd):
13 ssh_options="-q -o UserKnownHostsFile=junkssh -o StrictHostKeyChecking=no"
14 cmd="""ssh %s root@{} """ % ssh_options
16 args.append(shell_cmd)
19 def vx_start(filelist,outdir,cmd, timeout=0):
20 args = build_vx_args(cmd)
21 vxargs.start(None, 20, filelist, outdir, False, args, timeout)
23 if __name__ == "__main__":
25 parser = parsermodule.getParser(['nodesets'])
26 parser.set_defaults(outdir=None,
32 parser.add_option("", "--timeout", dest="timeout", metavar="seconds",
33 help="Number of seconds to wait before timing out on host.")
34 parser.add_option("", "--outdir", dest="outdir", metavar="dirname",
35 help="Name of directory to place output")
36 parser.add_option("", "--cmd", dest="cmdfile", metavar="filename",
37 help="Name of file that contains a unix-to-csv command " + \
38 "to run on the hosts.")
40 config = parsermodule.parse_args(parser)
42 if config.outdir == None:
47 if not os.path.exists(outdir):
48 os.system('mkdir -p %s' % outdir)
50 if config.site is not None or \
51 config.nodeselect is not None or \
52 config.nodegroup is not None:
53 print "TODO: implement support for nodeselect and site queries."
54 print "%s %s %s" % (config.site, config.nodeselect, config.nodegroup)
57 if config.nodelist == None and config.node == None:
58 filelist="nocomon.txt"
59 filelist = vxargs.getListFromFile(open(filelist,'r'))
60 elif os.path.exists(str(config.nodelist)) and os.path.isfile(config.nodelist):
61 filelist = vxargs.getListFromFile(open(config.nodelist,'r'))
62 elif os.path.exists(str(config.nodelist)) and os.path.isdir(config.nodelist):
63 filelist = get_hostlist_from_dir(config.nodelist)
64 elif config.node is not None:
65 filelist = [(config.node, '')]
67 # probably no such file.
68 raise Exception("No such file %s" % config.nodelist)
70 if config.cmdfile == None:
71 f = open("command.txt",'r')
74 f = open(config.cmdfile,'r')
79 vx_start(filelist, outdir, cmd, int(config.timeout))