From 46586235c4847b80e911d0fd89e823809f126779 Mon Sep 17 00:00:00 2001 From: Vincent Behar Date: Thu, 7 Jul 2011 18:24:55 +0200 Subject: [PATCH] add 2 new methods for execution duration, that returns human-readable strings --- .../rundeck/api/domain/RundeckExecution.java | 25 +++++++++++++++++++ src/site/confluence/groovy.confluence | 2 +- src/site/confluence/jruby.confluence | 2 +- src/site/confluence/jython.confluence | 2 +- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/rundeck/api/domain/RundeckExecution.java b/src/main/java/org/rundeck/api/domain/RundeckExecution.java index 0ebe54e..7292646 100644 --- a/src/main/java/org/rundeck/api/domain/RundeckExecution.java +++ b/src/main/java/org/rundeck/api/domain/RundeckExecution.java @@ -18,6 +18,7 @@ package org.rundeck.api.domain; import java.io.Serializable; import java.util.Date; import java.util.concurrent.TimeUnit; +import org.apache.commons.lang.time.DurationFormatUtils; /** * Represents a RunDeck execution, usually triggered by an API call. An execution could be a {@link RundeckJob} @@ -72,6 +73,30 @@ public class RundeckExecution implements Serializable { return TimeUnit.MILLISECONDS.toSeconds(durationInMillis); } + /** + * @return the duration of the execution, as a human-readable string : "3 minutes 34 seconds" (or null if the + * duration is still running, or has been aborted) + */ + public String getDuration() { + Long durationInMillis = getDurationInMillis(); + if (durationInMillis == null) { + return null; + } + return DurationFormatUtils.formatDurationWords(durationInMillis, true, true); + } + + /** + * @return the duration of the execution, as a "short" human-readable string : "0:03:34.187" (or null if the + * duration is still running, or has been aborted) + */ + public String getShortDuration() { + Long durationInMillis = getDurationInMillis(); + if (durationInMillis == null) { + return null; + } + return DurationFormatUtils.formatDurationHMS(durationInMillis); + } + public Long getId() { return id; } diff --git a/src/site/confluence/groovy.confluence b/src/site/confluence/groovy.confluence index 61ff200..59c198e 100644 --- a/src/site/confluence/groovy.confluence +++ b/src/site/confluence/groovy.confluence @@ -61,7 +61,7 @@ execution = rundeck.triggerJob("job-id", new Properties(opt: "value"), new Prope // last one : you can run a job and wait until its execution is finished : execution = rundeck.runJob("job-id") -println "Execution finished ! Status : ${execution.status}, duration (in seconds) : ${execution.durationInSeconds}" +println "Execution finished ! Status : ${execution.status}, duration : ${execution.duration}" {code} h2. Running an ad-hoc command diff --git a/src/site/confluence/jruby.confluence b/src/site/confluence/jruby.confluence index 98594ce..7dbbbc2 100644 --- a/src/site/confluence/jruby.confluence +++ b/src/site/confluence/jruby.confluence @@ -60,7 +60,7 @@ execution = rundeck.triggerJob("job-id", OptionsBuilder.new().addOption("opt", " // last one : you can run a job and wait until its execution is finished : execution = rundeck.runJob("job-id") -puts "Execution finished ! Status : #{execution.status}, duration (in seconds) : #{execution.durationInSeconds}" +puts "Execution finished ! Status : #{execution.status}, duration : #{execution.duration}" {code} h2. Running an ad-hoc command diff --git a/src/site/confluence/jython.confluence b/src/site/confluence/jython.confluence index 60f2177..2c21bfb 100644 --- a/src/site/confluence/jython.confluence +++ b/src/site/confluence/jython.confluence @@ -45,7 +45,7 @@ execution = rundeck.triggerJob("job-id", OptionsBuilder().addOption("opt", "valu // last one : you can run a job and wait until its execution is finished : execution = rundeck.runJob("job-id") -print("Execution finished ! Status : %s, duration (in seconds) : %s" % (execution.status, execution.durationInSeconds)) +print("Execution finished ! Status : %s, duration : %s" % (execution.status, execution.duration)) {code} h2. Running an ad-hoc command