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 | 5fadbfe | 2007-10-06 21:12:06 +0000 | [diff] [blame^] | 20 | import sys, os |
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 | 5fadbfe | 2007-10-06 21:12:06 +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 | 5fadbfe | 2007-10-06 21:12:06 +0000 | [diff] [blame^] | 38 | |
mbligh | c99add6 | 2007-09-27 17:02:58 +0000 | [diff] [blame] | 39 | def usage(): |
| 40 | usage = "usage: %prog <control file>" |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 41 | print usage |
mbligh | dcd57a8 | 2007-07-11 23:06:47 +0000 | [diff] [blame] | 42 | |
mbligh | 5fadbfe | 2007-10-06 21:12:06 +0000 | [diff] [blame^] | 43 | |
mbligh | dcd57a8 | 2007-07-11 23:06:47 +0000 | [diff] [blame] | 44 | if __name__ == "__main__": |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 45 | args = [] |
| 46 | tmp_args = sys.argv[1:] |
| 47 | machines = None |
| 48 | while tmp_args: |
| 49 | if tmp_args[0] in ('-m', '--machines'): |
| 50 | if len(tmp_args) < 2: |
| 51 | raise('"' + tmp_args[0] + '" used, but then no machine defined') |
| 52 | machines = tmp_args[1] |
| 53 | tmp_args = tmp_args[2:] |
| 54 | else: |
| 55 | args.append(tmp_args[0]) |
| 56 | tmp_args = tmp_args[1:] |
mbligh | c99add6 | 2007-09-27 17:02:58 +0000 | [diff] [blame] | 57 | |
| 58 | if len(args) < 1: |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 59 | usage() |
| 60 | sys.exit(1) |
mbligh | c99add6 | 2007-09-27 17:02:58 +0000 | [diff] [blame] | 61 | |
mbligh | 29aa970 | 2007-08-09 22:41:43 +0000 | [diff] [blame] | 62 | control_file = args[0] |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 63 | args = args[1:] |
mbligh | c99add6 | 2007-09-27 17:02:58 +0000 | [diff] [blame] | 64 | |
| 65 | if machines: |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 66 | run(control_file, machines.split(','), args) |
mbligh | 29aa970 | 2007-08-09 22:41:43 +0000 | [diff] [blame] | 67 | else: |
mbligh | 95fca57 | 2007-09-27 17:11:00 +0000 | [diff] [blame] | 68 | run(control_file, None, args) |