from ganeti.cli import *
from ganeti import constants
from ganeti import errors
+from ganeti import utils
#: default list of fields for L{ListJobs}
else:
selected_fields = opts.output.split(",")
- output = GetClient().QueryJobs(None, selected_fields)
+ output = GetClient().QueryJobs(args, selected_fields)
if not opts.no_headers:
# TODO: Implement more fields
headers = {
else:
headers = None
- # we don't have yet unitfields here
- unitfields = None
- numfields = None
-
# change raw values to nicer strings
- for row in output:
+ for row_id, row in enumerate(output):
+ if row is None:
+ ToStderr("No such job: %s" % args[row_id])
+ continue
+
for idx, field in enumerate(selected_fields):
val = row[idx]
if field == "status":
row[idx] = str(val)
data = GenerateTable(separator=opts.separator, headers=headers,
- fields=selected_fields, unitfields=unitfields,
- numfields=numfields, data=output, units=opts.units)
+ fields=selected_fields, data=output)
for line in data:
ToStdout(line)
@param opts: the command line options selected by the user
@type args: list
@param args: should contain only one element, the age as a time spec
- that can be parsed by L{cli.ParseTimespec} or the keyword I{all},
- which will cause all jobs to be archived
+ that can be parsed by L{ganeti.cli.ParseTimespec} or the
+ keyword I{all}, which will cause all jobs to be archived
@rtype: int
@return: the desired exit code
else:
age = ParseTimespec(age)
- client.AutoArchiveJobs(age)
+ (archived_count, jobs_left) = client.AutoArchiveJobs(age)
+ ToStdout("Archived %s jobs, %s unchecked left", archived_count, jobs_left)
+
return 0
client = GetClient()
for job_id in args:
- client.CancelJob(job_id)
+ (success, msg) = client.CancelJob(job_id)
+ ToStdout(msg)
+ # TODO: Different exit value if not all jobs were canceled?
return 0
format(3, "Execution log:")
for serial, log_ts, log_type, log_msg in log:
time_txt = FormatTimestamp(log_ts)
- encoded = str(log_msg).encode('string_escape')
+ encoded = utils.SafeEncode(log_msg)
format(4, "%s:%s:%s %s" % (serial, time_txt, log_type, encoded))
return 0
commands = {
- 'list': (ListJobs, ARGS_NONE,
- [DEBUG_OPT, NOHDR_OPT, SEP_OPT, USEUNITS_OPT, FIELDS_OPT],
- "", "List the jobs and their status. The available fields are"
+ 'list': (ListJobs, ARGS_ANY,
+ [DEBUG_OPT, NOHDR_OPT, SEP_OPT, FIELDS_OPT],
+ "[job_id ...]",
+ "List the jobs and their status. The available fields are"
" (see the man page for details): id, status, op_list,"
" op_status, op_result."
" The default field"