OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2014 The Swarming Authors. All rights reserved. | 2 # Copyright 2014 The Swarming Authors. All rights reserved. |
3 # Use of this source code is governed under the Apache License, Version 2.0 that | 3 # Use of this source code is governed under the Apache License, Version 2.0 that |
4 # can be found in the LICENSE file. | 4 # can be found in the LICENSE file. |
5 | 5 |
6 """Automated maintenance tool to run a script on bots. | 6 """Automated maintenance tool to run a script on bots. |
7 | 7 |
8 To use this script, write a self-contained python script (use a .zip if | 8 To use this script, write a self-contained python script (use a .zip if |
9 necessary), specify it on the command line and it will be packaged and triggered | 9 necessary), specify it on the command line and it will be packaged and triggered |
10 on all the swarming bots corresponding to the --dimension filters specified, or | 10 on all the swarming bots corresponding to the --dimension filters specified, or |
11 all the bots if no filter is specified. | 11 all the bots if no filter is specified. |
12 """ | 12 """ |
13 | 13 |
14 __version__ = '0.1' | 14 __version__ = '0.1' |
15 | 15 |
16 import os | 16 import os |
17 import tempfile | 17 import tempfile |
18 import shutil | 18 import shutil |
19 import subprocess | 19 import subprocess |
20 import sys | 20 import sys |
21 | 21 |
22 ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | 22 ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
23 | 23 |
24 # Must be first import. | 24 # Must be first import. |
25 import parallel_execution | 25 import parallel_execution |
26 | 26 |
27 from third_party import colorama | 27 from third_party import colorama |
28 from third_party.depot_tools import fix_encoding | 28 from third_party.depot_tools import fix_encoding |
| 29 from utils import file_path |
29 from utils import tools | 30 from utils import tools |
30 | 31 |
31 | 32 |
32 def get_bot_list(swarming_server, dimensions, dead_only): | 33 def get_bot_list(swarming_server, dimensions, dead_only): |
33 """Returns a list of swarming bots.""" | 34 """Returns a list of swarming bots.""" |
34 cmd = [ | 35 cmd = [ |
35 sys.executable, 'swarming.py', 'bots', | 36 sys.executable, 'swarming.py', 'bots', |
36 '--swarming', swarming_server, | 37 '--swarming', swarming_server, |
37 '--bare', | 38 '--bare', |
38 ] | 39 ] |
(...skipping 21 matching lines...) Expand all Loading... |
60 f.write(str(isolate)) | 61 f.write(str(isolate)) |
61 shutil.copyfile(script, os.path.join(tempdir, base_script)) | 62 shutil.copyfile(script, os.path.join(tempdir, base_script)) |
62 cmd = [ | 63 cmd = [ |
63 sys.executable, 'isolate.py', 'archive', | 64 sys.executable, 'isolate.py', 'archive', |
64 '--isolate-server', isolate_server, | 65 '--isolate-server', isolate_server, |
65 '-i', isolate_file, | 66 '-i', isolate_file, |
66 '-s', isolated_file, | 67 '-s', isolated_file, |
67 ] | 68 ] |
68 return subprocess.check_output(cmd, cwd=ROOT_DIR).split()[0] | 69 return subprocess.check_output(cmd, cwd=ROOT_DIR).split()[0] |
69 finally: | 70 finally: |
70 shutil.rmtree(tempdir) | 71 file_path.rmtree(tempdir) |
71 | 72 |
72 | 73 |
73 def run_serial( | 74 def run_serial( |
74 swarming_server, isolate_server, priority, deadline, repeat, isolated_hash, | 75 swarming_server, isolate_server, priority, deadline, repeat, isolated_hash, |
75 name, bots): | 76 name, bots): |
76 """Runs the task one at a time. | 77 """Runs the task one at a time. |
77 | 78 |
78 This will be mainly bound by task scheduling latency, especially if the bots | 79 This will be mainly bound by task scheduling latency, especially if the bots |
79 are busy and the priority is low. | 80 are busy and the priority is low. |
80 """ | 81 """ |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 isolated_hash, | 181 isolated_hash, |
181 name, | 182 name, |
182 bots) | 183 bots) |
183 | 184 |
184 | 185 |
185 if __name__ == '__main__': | 186 if __name__ == '__main__': |
186 fix_encoding.fix_encoding() | 187 fix_encoding.fix_encoding() |
187 tools.disable_buffering() | 188 tools.disable_buffering() |
188 colorama.init() | 189 colorama.init() |
189 sys.exit(main()) | 190 sys.exit(main()) |
OLD | NEW |