4 # Copyright (C) 2006, 2007 Google Inc.
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25 from optparse import make_option
26 from cStringIO import StringIO
28 from ganeti.cli import *
29 from ganeti import opcodes
30 from ganeti import logger
31 from ganeti import constants
32 from ganeti import utils
33 from ganeti import errors
36 def ListJobs(opts, args):
40 if opts.output is None:
41 selected_fields = ["id", "status"]
43 selected_fields = opts.output.split(",")
47 "fields": selected_fields,
51 output = SubmitQuery(query)
52 if not opts.no_headers:
57 "op_status": "OpStatus",
58 "op_result": "OpResult",
63 # we don't have yet unitfields here
67 # change raw values to nicer strings
69 for idx, field in enumerate(selected_fields):
72 if val == opcodes.Job.STATUS_PENDING:
74 elif val == opcodes.Job.STATUS_RUNNING:
76 elif val == opcodes.Job.STATUS_SUCCESS:
78 elif val == opcodes.Job.STATUS_FAIL:
80 elif val == opcodes.Job.STATUS_ABORT:
83 raise errors.ProgrammerError("Unknown job status code '%s'" % val)
87 data = GenerateTable(separator=opts.separator, headers=headers,
88 fields=selected_fields, unitfields=unitfields,
89 numfields=numfields, data=output)
97 'list': (ListJobs, ARGS_NONE,
98 [DEBUG_OPT, NOHDR_OPT, SEP_OPT, USEUNITS_OPT, FIELDS_OPT],
99 "", "List the jobs and their status. The available fields are"
100 " (see the man page for details): id, status, op_list,"
101 " op_status, op_result."
103 " list is (in order): id, status."),
107 if __name__ == '__main__':
108 sys.exit(GenericMain(commands))