automate scripts
[monitor.git] / automate / fetch.py
1 #!/usr/bin/python
2
3 import csv
4 import sys
5 import os
6 from glob import glob
7
8 import vxargs
9 import parser as parsermodule
10 from automate import *
11
12 def build_vx_args(shell_cmd):
13         ssh_options="-q -o UserKnownHostsFile=junkssh -o StrictHostKeyChecking=no"
14         cmd="""ssh %s root@{} """  % ssh_options
15         args = cmd.split()
16         args.append(shell_cmd)
17         return args
18
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)
22
23 if __name__ == "__main__":
24
25         parser = parsermodule.getParser(['nodesets'])
26         parser.set_defaults(outdir=None,
27                                                 timeout=0,
28                                                 simple=False,
29                                                 run=False,
30                                                 cmdfile=None,)
31
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.")
39
40         config = parsermodule.parse_args(parser)
41
42         if config.outdir == None: 
43                 outdir="checkhosts"
44         else: 
45                 outdir=config.outdir
46
47         if not os.path.exists(outdir):
48                 os.system('mkdir -p %s' % outdir)
49
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)
55                 sys.exit(1)
56
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, '')]
66         else:
67                 # probably no such file.
68                 raise Exception("No such file %s" % config.nodelist)
69
70         if config.cmdfile == None:
71                 f = open("command.txt",'r')
72                 cmd = f.read()
73         else:
74                 f = open(config.cmdfile,'r')
75                 cmd = f.read()
76
77         print filelist
78
79         vx_start(filelist, outdir, cmd, int(config.timeout))