Add “gnt-job change-priority” sub-command
authorMichael Hanselmann <hansmi@google.com>
Wed, 24 Oct 2012 01:46:15 +0000 (03:46 +0200)
committerMichael Hanselmann <hansmi@google.com>
Tue, 13 Nov 2012 19:28:21 +0000 (20:28 +0100)
This can be used to change the priority of a pending or running job (the
latter only if there are unprocessed opcodes).

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Bernardo Dal Seno <bdalseno@google.com>

lib/client/gnt_job.py
man/gnt-job.rst

index b1fa7f6..81f0bd1 100644 (file)
@@ -245,6 +245,26 @@ def CancelJobs(opts, args, cl=None, _stdout_fn=ToStdout, _ask_fn=AskUser):
                          lambda cl, job_id: cl.CancelJob(job_id))
 
 
+def ChangePriority(opts, args):
+  """Change priority of jobs.
+
+  @param opts: Command line options
+  @type args: list
+  @param args: Job IDs
+  @rtype: int
+  @return: Exit code
+
+  """
+  if opts.priority is None:
+    ToStderr("--priority option must be given.")
+    return constants.EXIT_FAILURE
+
+  return _MultiJobAction(opts, args, None, None, None,
+                         "Change priority of job(s) listed above?",
+                         lambda cl, job_id:
+                           cl.ChangeJobPriority(job_id, opts.priority))
+
+
 def ShowJobs(opts, args):
   """Show detailed information about jobs.
 
@@ -494,6 +514,12 @@ commands = {
   "watch": (
     WatchJob, [ArgJobId(min=1, max=1)], [],
     "<job-id>", "Follows a job and prints its output as it arrives"),
+  "change-priority": (
+    ChangePriority, [ArgJobId()],
+    [PRIORITY_OPT, FORCE_OPT, _PENDING_OPT, _QUEUED_OPT, _WAITING_OPT],
+    "--priority <priority> {[--force] {--pending | --queued | --waiting} |"
+    " <job-id> [<job-id> ...]}",
+    "Change the priority of jobs"),
   }
 
 
index 773d8a3..c7a0e8a 100644 (file)
@@ -50,6 +50,18 @@ not yet started to run can be canceled; that is, jobs in either the
 ``--queued`` and ``waiting`` can be used to cancel all jobs in the
 respective state, ``--pending`` includes both.
 
+CHANGE-PRIORITY
+~~~~~~~~~~~~~~~
+
+| **change-priority** --priority {low | normal | high}
+| {[\--force] {\--pending | \--queued | \--waiting} | *job-id* ...}
+
+Changes the priority of one or multiple pending jobs. Jobs currently
+running have only the priority of remaining opcodes changed.
+``--priority`` must be specified. ``--queued`` and ``waiting`` can be
+used to re-prioritize all jobs in the respective state, ``--pending``
+includes both. To skip a confirmation, pass ``--force``.
+
 INFO
 ~~~~