Merge lp:~stylesen/lava-scheduler-tool/add-job-output-cmd into lp:lava-scheduler-tool

Proposed by Senthil Kumaran S
Status: Merged
Merged at revision: 21
Proposed branch: lp:~stylesen/lava-scheduler-tool/add-job-output-cmd
Merge into: lp:lava-scheduler-tool
Diff against target: 70 lines (+45/-0)
2 files modified
lava_scheduler_tool/commands.py (+44/-0)
setup.py (+1/-0)
To merge this branch: bzr merge lp:~stylesen/lava-scheduler-tool/add-job-output-cmd
Reviewer Review Type Date Requested Status
Antonio Terceiro Approve
Review via email: mp+159335@code.launchpad.net

Description of the change

Add new command to lava-scheduler-tool in order to download job output file.

To post a comment you must log in.
Revision history for this message
Antonio Terceiro (terceiro) wrote :

Looks good to me

 review approve

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lava_scheduler_tool/commands.py'
2--- lava_scheduler_tool/commands.py 2012-05-11 04:12:23 +0000
3+++ lava_scheduler_tool/commands.py 2013-04-17 09:47:30 +0000
4@@ -16,6 +16,9 @@
5 # You should have received a copy of the GNU Lesser General Public License
6 # along with lava-scheduler-tool. If not, see <http://www.gnu.org/licenses/>.
7
8+import os
9+import sys
10+import argparse
11 import xmlrpclib
12
13 from lava_tool.authtoken import AuthenticatingServerProxy, KeyringAuthBackend
14@@ -88,3 +91,44 @@
15 server = AuthenticatingServerProxy(
16 self.args.SERVER, auth_backend=KeyringAuthBackend())
17 server.scheduler.cancel_job(self.args.JOB_ID)
18+
19+
20+class job_output(Command):
21+ """
22+ Get job output from the scheduler.
23+ """
24+
25+ @classmethod
26+ def register_arguments(cls, parser):
27+ super(job_output, cls).register_arguments(parser)
28+ parser.add_argument("SERVER")
29+ parser.add_argument("JOB_ID",
30+ type=int,
31+ help="Job ID to download output file")
32+ parser.add_argument("--overwrite",
33+ action="store_true",
34+ help="Overwrite files on the local disk")
35+ parser.add_argument("--output", "-o",
36+ type=argparse.FileType("wb"),
37+ default=None,
38+ help="Alternate name of the output file")
39+
40+ def invoke(self):
41+ if self.args.output is None:
42+ filename = str(self.args.JOB_ID) + '_output.txt'
43+ if os.path.exists(filename) and not self.args.overwrite:
44+ print >> sys.stderr, "File {filename!r} already exists".format(
45+ filename=filename)
46+ print >> sys.stderr, "You may pass --overwrite to write over it"
47+ return -1
48+ stream = open(filename, "wb")
49+ else:
50+ stream = self.args.output
51+ filename = self.args.output.name
52+
53+ server = AuthenticatingServerProxy(
54+ self.args.SERVER, auth_backend=KeyringAuthBackend())
55+ stream.write(server.scheduler.job_output(self.args.JOB_ID).data)
56+
57+ print "Downloaded job output of {0} to file {1!r}".format(
58+ self.args.JOB_ID, filename)
59
60=== modified file 'setup.py'
61--- setup.py 2012-04-04 05:22:32 +0000
62+++ setup.py 2013-04-17 09:47:30 +0000
63@@ -38,6 +38,7 @@
64 submit-job = lava_scheduler_tool.commands:submit_job
65 resubmit-job = lava_scheduler_tool.commands:resubmit_job
66 cancel-job = lava_scheduler_tool.commands:cancel_job
67+ job-output = lava_scheduler_tool.commands:job_output
68 [lava_tool.commands]
69 submit-job = lava_scheduler_tool.commands:submit_job
70 resubmit-job = lava_scheduler_tool.commands:resubmit_job

Subscribers

People subscribed via source and target branches