Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Side by Side Diff: client/example/2_swarming_run.py

Issue 1337633002: Reapply "Isolated task support in Endpoints API: client side (3/3)" and fixes" (Closed) Base URL: git@github.com:luci/luci-py.git@master
Patch Set: Final fixes Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « appengine/swarming/local_smoke_test.py ('k') | client/example/2_swarming_run_auto_upload.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2012 The Swarming Authors. All rights reserved. 2 # Copyright 2012 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 """Runs hello_world.py, through hello_world.isolate, remotely on a Swarming 6 """Runs hello_world.py, through hello_world.isolate, remotely on a Swarming
7 slave. 7 bot.
8 8
9 It first 'compiles' hello_world.isolate into hello_word.isolated, then requests 9 It first 'compiles' hello_world.isolate into hello_word.isolated, then requests
10 via swarming.py to archives, run and collect results for this task. 10 via swarming.py to archives, run and collect results for this task.
11
12 It generates example_result.json as a task summary.
11 """ 13 """
12 14
13 import os 15 import os
14 import shutil 16 import shutil
15 import subprocess 17 import subprocess
16 import sys 18 import sys
17 import tempfile 19 import tempfile
18 20
19 # Pylint can't find common.py that's in the same directory as this file. 21 # Pylint can't find common.py that's in the same directory as this file.
20 # pylint: disable=F0401 22 # pylint: disable=F0401
21 import common 23 import common
22 24
23 25
24 def main(): 26 def main():
25 options = common.parse_args(use_isolate_server=True, use_swarming=True) 27 options = common.parse_args(use_isolate_server=True, use_swarming=True)
26 tempdir = tempfile.mkdtemp(prefix=u'hello_world') 28 tempdir = tempfile.mkdtemp(prefix=u'hello_world')
27 try: 29 try:
28 # All the files are put in a temporary directory. This is optional and 30 isolated, _ = common.isolate(
29 # simply done so the current directory doesn't have the following files 31 tempdir, options.isolate_server, options.swarming_os, options.verbose)
30 # created:
31 # - hello_world.isolated
32 # - hello_world.isolated.state
33 isolated = os.path.join(tempdir, 'hello_world.isolated')
34
35 common.note(
36 'Creating hello_world.isolated. Note that this doesn\'t archives '
37 'anything.')
38 common.run(
39 [
40 'isolate.py',
41 'check',
42 '--isolate', os.path.join('payload', 'hello_world.isolate'),
43 '--isolated', isolated,
44 '--config-variable', 'OS', options.swarming_os,
45 ], options.verbose)
46
47 common.note( 32 common.note(
48 'Running the job remotely. This:\n' 33 'Running the job remotely. This:\n'
49 ' - archives to %s\n' 34 ' - archives to %s\n'
50 ' - runs and collect results via %s' % 35 ' - runs and collect results via %s' %
51 (options.isolate_server, options.swarming)) 36 (options.isolate_server, options.swarming))
52 cmd = [ 37 cmd = [
53 'swarming.py', 38 'swarming.py',
54 'run', 39 'run',
55 '--swarming', options.swarming, 40 '--swarming', options.swarming,
56 '--isolate-server', options.isolate_server, 41 '--isolate-server', options.isolate_server,
57 '--dimension', 'os', options.swarming_os, 42 '--dimension', 'os', options.swarming_os,
58 '--task-name', options.task_name, 43 '--task-name', options.task_name,
44 '--task-summary-json', 'example_result.json',
45 '--decorate',
59 isolated, 46 isolated,
60 ] 47 ]
61 if options.idempotent: 48 if options.idempotent:
62 cmd.append('--idempotent') 49 cmd.append('--idempotent')
63 if options.priority is not None: 50 if options.priority is not None:
64 cmd.extend(('--priority', str(options.priority))) 51 cmd.extend(('--priority', str(options.priority)))
65 common.run(cmd, options.verbose) 52 common.run(cmd, options.verbose)
53 with open('example_result.json', 'rb') as f:
54 print('example_result.json content:')
55 print(f.read())
66 return 0 56 return 0
67 except subprocess.CalledProcessError as e: 57 except subprocess.CalledProcessError as e:
68 return e.returncode 58 return e.returncode
69 finally: 59 finally:
70 shutil.rmtree(tempdir) 60 shutil.rmtree(tempdir)
71 61
72 62
73 if __name__ == '__main__': 63 if __name__ == '__main__':
74 sys.exit(main()) 64 sys.exit(main())
OLDNEW
« no previous file with comments | « appengine/swarming/local_smoke_test.py ('k') | client/example/2_swarming_run_auto_upload.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698