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:
61 # we don't have yet unitfields here
65 # change raw values to nicer strings
67 for idx, field in enumerate(selected_fields):
70 if val == opcodes.Job.STATUS_PENDING:
72 elif val == opcodes.Job.STATUS_RUNNING:
74 elif val == opcodes.Job.STATUS_FINISHED:
77 raise errors.ProgrammerError("Unknown job status code '%s'" % val)
81 data = GenerateTable(separator=opts.separator, headers=headers,
82 fields=selected_fields, unitfields=unitfields,
83 numfields=numfields, data=output)
91 'list': (ListJobs, ARGS_NONE,
92 [DEBUG_OPT, NOHDR_OPT, SEP_OPT, USEUNITS_OPT, FIELDS_OPT],
93 "", "List the jobs and their status. The available fields are"
94 " (see the man page for details): id, status, opcodes."
96 " list is (in order): id, status."),
100 if __name__ == '__main__':
101 sys.exit(GenericMain(commands))