mbligh | 6203ace | 2007-10-04 21:54:24 +0000 | [diff] [blame] | 1 | #!/usr/bin/python -u |
mbligh | dcd57a8 | 2007-07-11 23:06:47 +0000 | [diff] [blame] | 2 | # |
| 3 | # Copyright 2007 Google Inc. Released under the GPL v2 |
| 4 | |
mbligh | c8949b8 | 2007-07-23 16:33:58 +0000 | [diff] [blame] | 5 | """ |
| 6 | Run an autoserv control file |
mbligh | dcd57a8 | 2007-07-11 23:06:47 +0000 | [diff] [blame] | 7 | |
| 8 | TODO(poirier): add a singleton logger |
| 9 | TODO(poirier): maybe change the name "get_file" to "receive_file" ? |
mbligh | c8949b8 | 2007-07-23 16:33:58 +0000 | [diff] [blame] | 10 | TODO(poirier): change get(), send_file(), get_file() to consistantly recognize |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 11 | paths that start with '~' as refering to the home directory |
mbligh | dcd57a8 | 2007-07-11 23:06:47 +0000 | [diff] [blame] | 12 | """ |
| 13 | |
mbligh | c8949b8 | 2007-07-23 16:33:58 +0000 | [diff] [blame] | 14 | __author__ = """ |
| 15 | mbligh@google.com (Martin J. Bligh), |
| 16 | poirier@google.com (Benjamin Poirier), |
| 17 | stutsman@google.com (Ryan Stutsman) |
| 18 | """ |
mbligh | dcd57a8 | 2007-07-11 23:06:47 +0000 | [diff] [blame] | 19 | |
mbligh | dcd57a8 | 2007-07-11 23:06:47 +0000 | [diff] [blame] | 20 | import sys |
mbligh | dcd57a8 | 2007-07-11 23:06:47 +0000 | [diff] [blame] | 21 | |
mbligh | 29aa970 | 2007-08-09 22:41:43 +0000 | [diff] [blame] | 22 | preamble = """\ |
| 23 | import os, sys |
| 24 | |
| 25 | import errors, hosts, autotest, kvm |
| 26 | import source_kernel, rpm_kernel, deb_kernel |
| 27 | from subcommand import * |
| 28 | |
mbligh | 03dd079 | 2007-08-28 10:26:46 +0000 | [diff] [blame] | 29 | from utils import run, get_tmp_dir, sh_escape |
mbligh | 29aa970 | 2007-08-09 22:41:43 +0000 | [diff] [blame] | 30 | """ |
| 31 | |
mbligh | c99add6 | 2007-09-27 17:02:58 +0000 | [diff] [blame] | 32 | def run(control_file, machines, args): |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 33 | namespace = dict({'machines': machines, 'args': args}) |
mbligh | dcd57a8 | 2007-07-11 23:06:47 +0000 | [diff] [blame] | 34 | |
mbligh | 29aa970 | 2007-08-09 22:41:43 +0000 | [diff] [blame] | 35 | exec(preamble, namespace, namespace) |
| 36 | execfile(control_file, namespace, namespace) |
mbligh | dcd57a8 | 2007-07-11 23:06:47 +0000 | [diff] [blame] | 37 | |
mbligh | c99add6 | 2007-09-27 17:02:58 +0000 | [diff] [blame] | 38 | def usage(): |
| 39 | usage = "usage: %prog <control file>" |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 40 | print usage |
mbligh | dcd57a8 | 2007-07-11 23:06:47 +0000 | [diff] [blame] | 41 | |
| 42 | if __name__ == "__main__": |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 43 | args = [] |
| 44 | tmp_args = sys.argv[1:] |
| 45 | machines = None |
| 46 | while tmp_args: |
| 47 | if tmp_args[0] in ('-m', '--machines'): |
| 48 | if len(tmp_args) < 2: |
| 49 | raise('"' + tmp_args[0] + '" used, but then no machine defined') |
| 50 | machines = tmp_args[1] |
| 51 | tmp_args = tmp_args[2:] |
| 52 | else: |
| 53 | args.append(tmp_args[0]) |
| 54 | tmp_args = tmp_args[1:] |
mbligh | c99add6 | 2007-09-27 17:02:58 +0000 | [diff] [blame] | 55 | |
| 56 | if len(args) < 1: |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 57 | usage() |
| 58 | sys.exit(1) |
mbligh | c99add6 | 2007-09-27 17:02:58 +0000 | [diff] [blame] | 59 | |
mbligh | 29aa970 | 2007-08-09 22:41:43 +0000 | [diff] [blame] | 60 | control_file = args[0] |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 61 | args = args[1:] |
mbligh | c99add6 | 2007-09-27 17:02:58 +0000 | [diff] [blame] | 62 | |
| 63 | if machines: |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 64 | run(control_file, machines.split(','), args) |
mbligh | 29aa970 | 2007-08-09 22:41:43 +0000 | [diff] [blame] | 65 | else: |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 66 | run(control_file, None, args) |