diff --git a/apidocs/allclasses-frame.html b/apidocs/allclasses-frame.html index 75cd874..e77cdd7 100644 --- a/apidocs/allclasses-frame.html +++ b/apidocs/allclasses-frame.html @@ -2,13 +2,13 @@ - + -All Classes (RunDeck API - Java Client 2.0-SNAPSHOT API) +All Classes (RunDeck API - Java Client 2.0 API) - + diff --git a/apidocs/allclasses-noframe.html b/apidocs/allclasses-noframe.html index ebecb79..61e9001 100644 --- a/apidocs/allclasses-noframe.html +++ b/apidocs/allclasses-noframe.html @@ -2,13 +2,13 @@ - + -All Classes (RunDeck API - Java Client 2.0-SNAPSHOT API) +All Classes (RunDeck API - Java Client 2.0 API) - + diff --git a/apidocs/constant-values.html b/apidocs/constant-values.html index 2e3d41f..9ab09f4 100644 --- a/apidocs/constant-values.html +++ b/apidocs/constant-values.html @@ -2,13 +2,13 @@ - + -Constant Field Values (RunDeck API - Java Client 2.0-SNAPSHOT API) +Constant Field Values (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Constant Field Values (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Constant Field Values (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Constant Field Values (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/deprecated-list.html b/apidocs/deprecated-list.html index caaf6cb..7452ce6 100644 --- a/apidocs/deprecated-list.html +++ b/apidocs/deprecated-list.html @@ -2,13 +2,13 @@ - + -Deprecated List (RunDeck API - Java Client 2.0-SNAPSHOT API) +Deprecated List (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Deprecated List (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Deprecated List (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Deprecated List (RunDeck API - Java Client 2.0 API)"; } } @@ -86,8 +86,23 @@ function windowTitle()
Contents + + + + + + + + +
+Deprecated Methods
org.rundeck.api.RundeckClient.testCredentials() +
+          Use RundeckClient.testAuth() 
+  +


diff --git a/apidocs/help-doc.html b/apidocs/help-doc.html index 23603cd..6cce37b 100644 --- a/apidocs/help-doc.html +++ b/apidocs/help-doc.html @@ -2,13 +2,13 @@ - + -API Help (RunDeck API - Java Client 2.0-SNAPSHOT API) +API Help (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ API Help (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="API Help (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="API Help (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/index-all.html b/apidocs/index-all.html index d3ce127..02c8059 100644 --- a/apidocs/index-all.html +++ b/apidocs/index-all.html @@ -2,13 +2,13 @@ - + -Index (RunDeck API - Java Client 2.0-SNAPSHOT API) +Index (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Index (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Index (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Index (RunDeck API - Java Client 2.0 API)"; } } @@ -1188,9 +1188,12 @@ Constructor for class org.rundeck.api.parser.tags(String) - Method in class org.rundeck.api.NodeFiltersBuilder
Include nodes matching the given tags +
testAuth() - +Method in class org.rundeck.api.RundeckClient +
Test the authentication on the RunDeck instance.
testCredentials() - Method in class org.rundeck.api.RundeckClient -
Test your credentials (login/password) on the RunDeck instance +
Deprecated. Use RundeckClient.testAuth()
toProperties() - Method in class org.rundeck.api.NodeFiltersBuilder
  diff --git a/apidocs/index.html b/apidocs/index.html index 079134b..5b38238 100644 --- a/apidocs/index.html +++ b/apidocs/index.html @@ -2,10 +2,10 @@ - + -RunDeck API - Java Client 2.0-SNAPSHOT API +RunDeck API - Java Client 2.0 API diff --git a/apidocs/org/rundeck/api/NodeFiltersBuilder.html b/apidocs/org/rundeck/api/NodeFiltersBuilder.html index b8588d0..ab784b8 100644 --- a/apidocs/org/rundeck/api/NodeFiltersBuilder.html +++ b/apidocs/org/rundeck/api/NodeFiltersBuilder.html @@ -2,13 +2,13 @@ - + -NodeFiltersBuilder (RunDeck API - Java Client 2.0-SNAPSHOT API) +NodeFiltersBuilder (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ NodeFiltersBuilder (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="NodeFiltersBuilder (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="NodeFiltersBuilder (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/OptionsBuilder.html b/apidocs/org/rundeck/api/OptionsBuilder.html index 6990544..a323735 100644 --- a/apidocs/org/rundeck/api/OptionsBuilder.html +++ b/apidocs/org/rundeck/api/OptionsBuilder.html @@ -2,13 +2,13 @@ - + -OptionsBuilder (RunDeck API - Java Client 2.0-SNAPSHOT API) +OptionsBuilder (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ OptionsBuilder (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="OptionsBuilder (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="OptionsBuilder (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/RundeckApiException.RundeckApiAuthException.html b/apidocs/org/rundeck/api/RundeckApiException.RundeckApiAuthException.html index 8e9641f..6b3871e 100644 --- a/apidocs/org/rundeck/api/RundeckApiException.RundeckApiAuthException.html +++ b/apidocs/org/rundeck/api/RundeckApiException.RundeckApiAuthException.html @@ -2,13 +2,13 @@ - + -RundeckApiException.RundeckApiAuthException (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckApiException.RundeckApiAuthException (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckApiException.RundeckApiAuthException (RunDeck API - Java Client 2.0-SNAPS function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckApiException.RundeckApiAuthException (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckApiException.RundeckApiAuthException (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/RundeckApiException.RundeckApiLoginException.html b/apidocs/org/rundeck/api/RundeckApiException.RundeckApiLoginException.html index db04aab..31cc2c1 100644 --- a/apidocs/org/rundeck/api/RundeckApiException.RundeckApiLoginException.html +++ b/apidocs/org/rundeck/api/RundeckApiException.RundeckApiLoginException.html @@ -2,13 +2,13 @@ - + -RundeckApiException.RundeckApiLoginException (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckApiException.RundeckApiLoginException (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckApiException.RundeckApiLoginException (RunDeck API - Java Client 2.0-SNAP function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckApiException.RundeckApiLoginException (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckApiException.RundeckApiLoginException (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/RundeckApiException.RundeckApiTokenException.html b/apidocs/org/rundeck/api/RundeckApiException.RundeckApiTokenException.html index a9d52af..8ac919c 100644 --- a/apidocs/org/rundeck/api/RundeckApiException.RundeckApiTokenException.html +++ b/apidocs/org/rundeck/api/RundeckApiException.RundeckApiTokenException.html @@ -2,13 +2,13 @@ - + -RundeckApiException.RundeckApiTokenException (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckApiException.RundeckApiTokenException (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckApiException.RundeckApiTokenException (RunDeck API - Java Client 2.0-SNAP function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckApiException.RundeckApiTokenException (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckApiException.RundeckApiTokenException (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/RundeckApiException.html b/apidocs/org/rundeck/api/RundeckApiException.html index 69f32ac..6fc9dc3 100644 --- a/apidocs/org/rundeck/api/RundeckApiException.html +++ b/apidocs/org/rundeck/api/RundeckApiException.html @@ -2,13 +2,13 @@ - + -RundeckApiException (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckApiException (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckApiException (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckApiException (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckApiException (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/RundeckClient.html b/apidocs/org/rundeck/api/RundeckClient.html index c9a9cc9..a40d149 100644 --- a/apidocs/org/rundeck/api/RundeckClient.html +++ b/apidocs/org/rundeck/api/RundeckClient.html @@ -2,13 +2,13 @@ - + -RundeckClient (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckClient (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckClient (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckClient (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckClient (RunDeck API - Java Client 2.0 API)"; } } @@ -1063,10 +1063,18 @@ Main entry point to talk to a RunDeck instance.
 void +testAuth() + +
+          Test the authentication on the RunDeck instance. + + + + void testCredentials()
-          Test your credentials (login/password) on the RunDeck instance +          Deprecated. Use testAuth() @@ -1342,13 +1350,14 @@ public void ping()
-

-testCredentials

+

+testAuth

-public void testCredentials()
-                     throws RundeckApiException.RundeckApiLoginException
+public void testAuth() + throws RundeckApiException.RundeckApiLoginException, + RundeckApiException.RundeckApiTokenException
-
Test your credentials (login/password) on the RunDeck instance +
Test the authentication on the RunDeck instance.

@@ -1356,7 +1365,30 @@ public void testCredentials()
Throws: -
RundeckApiException.RundeckApiLoginException - if the login fails
+
RundeckApiException.RundeckApiLoginException - if the login fails (in case of login-based authentication) +
RundeckApiException.RundeckApiTokenException - if the token is invalid (in case of token-based authentication)
+
+ +
+ +

+testCredentials

+
+@Deprecated
+public void testCredentials()
+                     throws RundeckApiException.RundeckApiLoginException,
+                            RundeckApiException.RundeckApiTokenException
+
+
Deprecated. Use testAuth() +

+

+
+
+
+ +
Throws: +
RundeckApiException.RundeckApiLoginException +
RundeckApiException.RundeckApiTokenException
See Also:
testAuth()

diff --git a/apidocs/org/rundeck/api/class-use/FileType.html b/apidocs/org/rundeck/api/class-use/FileType.html index 78e1c92..36d853e 100644 --- a/apidocs/org/rundeck/api/class-use/FileType.html +++ b/apidocs/org/rundeck/api/class-use/FileType.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.FileType (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.FileType (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.FileType (RunDeck API - Java Client 2.0-SNAPSHOT A function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.FileType (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.FileType (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/class-use/NodeFiltersBuilder.html b/apidocs/org/rundeck/api/class-use/NodeFiltersBuilder.html index 659a0ef..6b06f43 100644 --- a/apidocs/org/rundeck/api/class-use/NodeFiltersBuilder.html +++ b/apidocs/org/rundeck/api/class-use/NodeFiltersBuilder.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.NodeFiltersBuilder (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.NodeFiltersBuilder (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.NodeFiltersBuilder (RunDeck API - Java Client 2.0- function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.NodeFiltersBuilder (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.NodeFiltersBuilder (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/class-use/OptionsBuilder.html b/apidocs/org/rundeck/api/class-use/OptionsBuilder.html index 6e07151..a52ff3c 100644 --- a/apidocs/org/rundeck/api/class-use/OptionsBuilder.html +++ b/apidocs/org/rundeck/api/class-use/OptionsBuilder.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.OptionsBuilder (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.OptionsBuilder (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.OptionsBuilder (RunDeck API - Java Client 2.0-SNAP function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.OptionsBuilder (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.OptionsBuilder (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiAuthException.html b/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiAuthException.html index 1d4219b..007cba8 100644 --- a/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiAuthException.html +++ b/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiAuthException.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.RundeckApiException.RundeckApiAuthException (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.RundeckApiException.RundeckApiAuthException (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.RundeckApiException.RundeckApiAuthException (RunDe function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.RundeckApiException.RundeckApiAuthException (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.RundeckApiException.RundeckApiAuthException (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiLoginException.html b/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiLoginException.html index 355b437..8f0ef04 100644 --- a/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiLoginException.html +++ b/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiLoginException.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.RundeckApiException.RundeckApiLoginException (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.RundeckApiException.RundeckApiLoginException (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.RundeckApiException.RundeckApiLoginException (RunD function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.RundeckApiException.RundeckApiLoginException (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.RundeckApiException.RundeckApiLoginException (RunDeck API - Java Client 2.0 API)"; } } @@ -917,10 +917,18 @@ Uses of  void +RundeckClient.testAuth() + +
+          Test the authentication on the RunDeck instance. + + + + void RundeckClient.testCredentials()
-          Test your credentials (login/password) on the RunDeck instance +          Deprecated. Use RundeckClient.testAuth() diff --git a/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiTokenException.html b/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiTokenException.html index 3169372..fd91536 100644 --- a/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiTokenException.html +++ b/apidocs/org/rundeck/api/class-use/RundeckApiException.RundeckApiTokenException.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.RundeckApiException.RundeckApiTokenException (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.RundeckApiException.RundeckApiTokenException (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.RundeckApiException.RundeckApiTokenException (RunD function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.RundeckApiException.RundeckApiTokenException (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.RundeckApiException.RundeckApiTokenException (RunDeck API - Java Client 2.0 API)"; } } @@ -916,6 +916,22 @@ Uses of + void +RundeckClient.testAuth() + +
+          Test the authentication on the RunDeck instance. + + + + void +RundeckClient.testCredentials() + +
+          Deprecated. Use RundeckClient.testAuth() + + +  RundeckExecution RundeckClient.triggerAdhocCommand(String project, String command) diff --git a/apidocs/org/rundeck/api/class-use/RundeckApiException.html b/apidocs/org/rundeck/api/class-use/RundeckApiException.html index f33a0d7..9c74022 100644 --- a/apidocs/org/rundeck/api/class-use/RundeckApiException.html +++ b/apidocs/org/rundeck/api/class-use/RundeckApiException.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.RundeckApiException (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.RundeckApiException (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.RundeckApiException (RunDeck API - Java Client 2.0 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.RundeckApiException (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.RundeckApiException (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/class-use/RundeckClient.html b/apidocs/org/rundeck/api/class-use/RundeckClient.html index 024fdcc..95a48b4 100644 --- a/apidocs/org/rundeck/api/class-use/RundeckClient.html +++ b/apidocs/org/rundeck/api/class-use/RundeckClient.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.RundeckClient (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.RundeckClient (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.RundeckClient (RunDeck API - Java Client 2.0-SNAPS function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.RundeckClient (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.RundeckClient (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckAbort.AbortStatus.html b/apidocs/org/rundeck/api/domain/RundeckAbort.AbortStatus.html index 5b8794d..7c6cc37 100644 --- a/apidocs/org/rundeck/api/domain/RundeckAbort.AbortStatus.html +++ b/apidocs/org/rundeck/api/domain/RundeckAbort.AbortStatus.html @@ -2,13 +2,13 @@ - + -RundeckAbort.AbortStatus (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckAbort.AbortStatus (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckAbort.AbortStatus (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckAbort.AbortStatus (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckAbort.AbortStatus (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckAbort.html b/apidocs/org/rundeck/api/domain/RundeckAbort.html index 44b04ba..8de96a6 100644 --- a/apidocs/org/rundeck/api/domain/RundeckAbort.html +++ b/apidocs/org/rundeck/api/domain/RundeckAbort.html @@ -2,13 +2,13 @@ - + -RundeckAbort (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckAbort (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckAbort (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckAbort (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckAbort (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckEvent.EventStatus.html b/apidocs/org/rundeck/api/domain/RundeckEvent.EventStatus.html index 3d0bc07..0041369 100644 --- a/apidocs/org/rundeck/api/domain/RundeckEvent.EventStatus.html +++ b/apidocs/org/rundeck/api/domain/RundeckEvent.EventStatus.html @@ -2,13 +2,13 @@ - + -RundeckEvent.EventStatus (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckEvent.EventStatus (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckEvent.EventStatus (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckEvent.EventStatus (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckEvent.EventStatus (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckEvent.NodeSummary.html b/apidocs/org/rundeck/api/domain/RundeckEvent.NodeSummary.html index 4fa48ec..1d49554 100644 --- a/apidocs/org/rundeck/api/domain/RundeckEvent.NodeSummary.html +++ b/apidocs/org/rundeck/api/domain/RundeckEvent.NodeSummary.html @@ -2,13 +2,13 @@ - + -RundeckEvent.NodeSummary (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckEvent.NodeSummary (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckEvent.NodeSummary (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckEvent.NodeSummary (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckEvent.NodeSummary (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckEvent.html b/apidocs/org/rundeck/api/domain/RundeckEvent.html index 9fe8bf6..34dafa4 100644 --- a/apidocs/org/rundeck/api/domain/RundeckEvent.html +++ b/apidocs/org/rundeck/api/domain/RundeckEvent.html @@ -2,13 +2,13 @@ - + -RundeckEvent (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckEvent (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckEvent (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckEvent (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckEvent (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckExecution.ExecutionStatus.html b/apidocs/org/rundeck/api/domain/RundeckExecution.ExecutionStatus.html index cd5aa2d..3c7fb7c 100644 --- a/apidocs/org/rundeck/api/domain/RundeckExecution.ExecutionStatus.html +++ b/apidocs/org/rundeck/api/domain/RundeckExecution.ExecutionStatus.html @@ -2,13 +2,13 @@ - + -RundeckExecution.ExecutionStatus (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckExecution.ExecutionStatus (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckExecution.ExecutionStatus (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckExecution.ExecutionStatus (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckExecution.ExecutionStatus (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckExecution.html b/apidocs/org/rundeck/api/domain/RundeckExecution.html index 3aa0273..b3d21f1 100644 --- a/apidocs/org/rundeck/api/domain/RundeckExecution.html +++ b/apidocs/org/rundeck/api/domain/RundeckExecution.html @@ -2,13 +2,13 @@ - + -RundeckExecution (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckExecution (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckExecution (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckExecution (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckExecution (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckHistory.html b/apidocs/org/rundeck/api/domain/RundeckHistory.html index f3e49ab..df96281 100644 --- a/apidocs/org/rundeck/api/domain/RundeckHistory.html +++ b/apidocs/org/rundeck/api/domain/RundeckHistory.html @@ -2,13 +2,13 @@ - + -RundeckHistory (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckHistory (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckHistory (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckHistory (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckHistory (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckJob.html b/apidocs/org/rundeck/api/domain/RundeckJob.html index 2472494..daf15f6 100644 --- a/apidocs/org/rundeck/api/domain/RundeckJob.html +++ b/apidocs/org/rundeck/api/domain/RundeckJob.html @@ -2,13 +2,13 @@ - + -RundeckJob (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckJob (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckJob (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckJob (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckJob (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckJobsImportMethod.html b/apidocs/org/rundeck/api/domain/RundeckJobsImportMethod.html index 128f8a8..dffb6ed 100644 --- a/apidocs/org/rundeck/api/domain/RundeckJobsImportMethod.html +++ b/apidocs/org/rundeck/api/domain/RundeckJobsImportMethod.html @@ -2,13 +2,13 @@ - + -RundeckJobsImportMethod (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckJobsImportMethod (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckJobsImportMethod (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckJobsImportMethod (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckJobsImportMethod (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckJobsImportResult.html b/apidocs/org/rundeck/api/domain/RundeckJobsImportResult.html index e0cbb7a..e9a6ab3 100644 --- a/apidocs/org/rundeck/api/domain/RundeckJobsImportResult.html +++ b/apidocs/org/rundeck/api/domain/RundeckJobsImportResult.html @@ -2,13 +2,13 @@ - + -RundeckJobsImportResult (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckJobsImportResult (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckJobsImportResult (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckJobsImportResult (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckJobsImportResult (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckNode.html b/apidocs/org/rundeck/api/domain/RundeckNode.html index 9b7975c..688463b 100644 --- a/apidocs/org/rundeck/api/domain/RundeckNode.html +++ b/apidocs/org/rundeck/api/domain/RundeckNode.html @@ -2,13 +2,13 @@ - + -RundeckNode (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckNode (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckNode (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckNode (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckNode (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckProject.html b/apidocs/org/rundeck/api/domain/RundeckProject.html index 5f349cf..abdb265 100644 --- a/apidocs/org/rundeck/api/domain/RundeckProject.html +++ b/apidocs/org/rundeck/api/domain/RundeckProject.html @@ -2,13 +2,13 @@ - + -RundeckProject (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckProject (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckProject (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckProject (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckProject (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/RundeckSystemInfo.html b/apidocs/org/rundeck/api/domain/RundeckSystemInfo.html index 7534b35..67f6d34 100644 --- a/apidocs/org/rundeck/api/domain/RundeckSystemInfo.html +++ b/apidocs/org/rundeck/api/domain/RundeckSystemInfo.html @@ -2,13 +2,13 @@ - + -RundeckSystemInfo (RunDeck API - Java Client 2.0-SNAPSHOT API) +RundeckSystemInfo (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ RundeckSystemInfo (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="RundeckSystemInfo (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="RundeckSystemInfo (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckAbort.AbortStatus.html b/apidocs/org/rundeck/api/domain/class-use/RundeckAbort.AbortStatus.html index c5226b5..7aedbbf 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckAbort.AbortStatus.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckAbort.AbortStatus.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckAbort.AbortStatus (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckAbort.AbortStatus (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckAbort.AbortStatus (RunDeck API - Jav function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckAbort.AbortStatus (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckAbort.AbortStatus (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckAbort.html b/apidocs/org/rundeck/api/domain/class-use/RundeckAbort.html index 23aee79..1f45269 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckAbort.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckAbort.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckAbort (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckAbort (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckAbort (RunDeck API - Java Client 2.0 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckAbort (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckAbort (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.EventStatus.html b/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.EventStatus.html index d41f4b2..9d611a2 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.EventStatus.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.EventStatus.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckEvent.EventStatus (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckEvent.EventStatus (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckEvent.EventStatus (RunDeck API - Jav function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckEvent.EventStatus (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckEvent.EventStatus (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.NodeSummary.html b/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.NodeSummary.html index 234c7ed..dab2279 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.NodeSummary.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.NodeSummary.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckEvent.NodeSummary (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckEvent.NodeSummary (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckEvent.NodeSummary (RunDeck API - Jav function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckEvent.NodeSummary (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckEvent.NodeSummary (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.html b/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.html index 3f00b67..80b01e4 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckEvent.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckEvent (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckEvent (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckEvent (RunDeck API - Java Client 2.0 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckEvent (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckEvent (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckExecution.ExecutionStatus.html b/apidocs/org/rundeck/api/domain/class-use/RundeckExecution.ExecutionStatus.html index 0376b14..f238302 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckExecution.ExecutionStatus.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckExecution.ExecutionStatus.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckExecution.ExecutionStatus (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckExecution.ExecutionStatus (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckExecution.ExecutionStatus (RunDeck A function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckExecution.ExecutionStatus (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckExecution.ExecutionStatus (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckExecution.html b/apidocs/org/rundeck/api/domain/class-use/RundeckExecution.html index f51db44..5ceb37a 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckExecution.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckExecution.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckExecution (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckExecution (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckExecution (RunDeck API - Java Client function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckExecution (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckExecution (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckHistory.html b/apidocs/org/rundeck/api/domain/class-use/RundeckHistory.html index 3a3637e..ebc0a38 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckHistory.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckHistory.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckHistory (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckHistory (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckHistory (RunDeck API - Java Client 2 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckHistory (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckHistory (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckJob.html b/apidocs/org/rundeck/api/domain/class-use/RundeckJob.html index 74fd18e..2875957 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckJob.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckJob.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckJob (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckJob (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckJob (RunDeck API - Java Client 2.0-S function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckJob (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckJob (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckJobsImportMethod.html b/apidocs/org/rundeck/api/domain/class-use/RundeckJobsImportMethod.html index d50798c..e550083 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckJobsImportMethod.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckJobsImportMethod.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckJobsImportMethod (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckJobsImportMethod (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckJobsImportMethod (RunDeck API - Java function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckJobsImportMethod (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckJobsImportMethod (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckJobsImportResult.html b/apidocs/org/rundeck/api/domain/class-use/RundeckJobsImportResult.html index a84ebb0..765ce83 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckJobsImportResult.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckJobsImportResult.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckJobsImportResult (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckJobsImportResult (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckJobsImportResult (RunDeck API - Java function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckJobsImportResult (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckJobsImportResult (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckNode.html b/apidocs/org/rundeck/api/domain/class-use/RundeckNode.html index 684e176..a5330d7 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckNode.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckNode.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckNode (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckNode (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckNode (RunDeck API - Java Client 2.0- function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckNode (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckNode (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckProject.html b/apidocs/org/rundeck/api/domain/class-use/RundeckProject.html index 90a778f..f55d400 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckProject.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckProject.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckProject (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckProject (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckProject (RunDeck API - Java Client 2 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckProject (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckProject (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/class-use/RundeckSystemInfo.html b/apidocs/org/rundeck/api/domain/class-use/RundeckSystemInfo.html index e4c3170..88850bb 100644 --- a/apidocs/org/rundeck/api/domain/class-use/RundeckSystemInfo.html +++ b/apidocs/org/rundeck/api/domain/class-use/RundeckSystemInfo.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.domain.RundeckSystemInfo (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.domain.RundeckSystemInfo (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.domain.RundeckSystemInfo (RunDeck API - Java Clien function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.domain.RundeckSystemInfo (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.domain.RundeckSystemInfo (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/package-frame.html b/apidocs/org/rundeck/api/domain/package-frame.html index 8f3cc1b..a0fa117 100644 --- a/apidocs/org/rundeck/api/domain/package-frame.html +++ b/apidocs/org/rundeck/api/domain/package-frame.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.domain (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api.domain (RunDeck API - Java Client 2.0 API) - + diff --git a/apidocs/org/rundeck/api/domain/package-summary.html b/apidocs/org/rundeck/api/domain/package-summary.html index f9f1983..a6e9d94 100644 --- a/apidocs/org/rundeck/api/domain/package-summary.html +++ b/apidocs/org/rundeck/api/domain/package-summary.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.domain (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api.domain (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ org.rundeck.api.domain (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api.domain (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="org.rundeck.api.domain (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/package-tree.html b/apidocs/org/rundeck/api/domain/package-tree.html index 68a9fcc..6374e81 100644 --- a/apidocs/org/rundeck/api/domain/package-tree.html +++ b/apidocs/org/rundeck/api/domain/package-tree.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.domain Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api.domain Class Hierarchy (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ org.rundeck.api.domain Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT A function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api.domain Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="org.rundeck.api.domain Class Hierarchy (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/domain/package-use.html b/apidocs/org/rundeck/api/domain/package-use.html index 1c0ff19..2ade549 100644 --- a/apidocs/org/rundeck/api/domain/package-use.html +++ b/apidocs/org/rundeck/api/domain/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.rundeck.api.domain (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Package org.rundeck.api.domain (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Package org.rundeck.api.domain (RunDeck API - Java Client 2.0-SNAPSHOT A function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.rundeck.api.domain (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Package org.rundeck.api.domain (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/package-frame.html b/apidocs/org/rundeck/api/package-frame.html index dd9cbb6..8508744 100644 --- a/apidocs/org/rundeck/api/package-frame.html +++ b/apidocs/org/rundeck/api/package-frame.html @@ -2,13 +2,13 @@ - + -org.rundeck.api (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api (RunDeck API - Java Client 2.0 API) - + diff --git a/apidocs/org/rundeck/api/package-summary.html b/apidocs/org/rundeck/api/package-summary.html index bdebc96..f8539d6 100644 --- a/apidocs/org/rundeck/api/package-summary.html +++ b/apidocs/org/rundeck/api/package-summary.html @@ -2,13 +2,13 @@ - + -org.rundeck.api (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ org.rundeck.api (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="org.rundeck.api (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/package-tree.html b/apidocs/org/rundeck/api/package-tree.html index 1c34728..1f0444f 100644 --- a/apidocs/org/rundeck/api/package-tree.html +++ b/apidocs/org/rundeck/api/package-tree.html @@ -2,13 +2,13 @@ - + -org.rundeck.api Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api Class Hierarchy (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ org.rundeck.api Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="org.rundeck.api Class Hierarchy (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/package-use.html b/apidocs/org/rundeck/api/package-use.html index 42549cc..86207a0 100644 --- a/apidocs/org/rundeck/api/package-use.html +++ b/apidocs/org/rundeck/api/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.rundeck.api (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Package org.rundeck.api (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Package org.rundeck.api (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.rundeck.api (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Package org.rundeck.api (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/AbortParser.html b/apidocs/org/rundeck/api/parser/AbortParser.html index dca6023..d489680 100644 --- a/apidocs/org/rundeck/api/parser/AbortParser.html +++ b/apidocs/org/rundeck/api/parser/AbortParser.html @@ -2,13 +2,13 @@ - + -AbortParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +AbortParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ AbortParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="AbortParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="AbortParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/EventParser.html b/apidocs/org/rundeck/api/parser/EventParser.html index 0839295..65d3a74 100644 --- a/apidocs/org/rundeck/api/parser/EventParser.html +++ b/apidocs/org/rundeck/api/parser/EventParser.html @@ -2,13 +2,13 @@ - + -EventParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +EventParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ EventParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="EventParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="EventParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/ExecutionParser.html b/apidocs/org/rundeck/api/parser/ExecutionParser.html index f7ef49c..22a8cc1 100644 --- a/apidocs/org/rundeck/api/parser/ExecutionParser.html +++ b/apidocs/org/rundeck/api/parser/ExecutionParser.html @@ -2,13 +2,13 @@ - + -ExecutionParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +ExecutionParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ ExecutionParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ExecutionParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="ExecutionParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/HistoryParser.html b/apidocs/org/rundeck/api/parser/HistoryParser.html index b99ab4f..9531250 100644 --- a/apidocs/org/rundeck/api/parser/HistoryParser.html +++ b/apidocs/org/rundeck/api/parser/HistoryParser.html @@ -2,13 +2,13 @@ - + -HistoryParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +HistoryParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ HistoryParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="HistoryParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="HistoryParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/JobParser.html b/apidocs/org/rundeck/api/parser/JobParser.html index f133d53..1a8149f 100644 --- a/apidocs/org/rundeck/api/parser/JobParser.html +++ b/apidocs/org/rundeck/api/parser/JobParser.html @@ -2,13 +2,13 @@ - + -JobParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +JobParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ JobParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="JobParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="JobParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/JobsImportResultParser.html b/apidocs/org/rundeck/api/parser/JobsImportResultParser.html index b5a97d0..78ab533 100644 --- a/apidocs/org/rundeck/api/parser/JobsImportResultParser.html +++ b/apidocs/org/rundeck/api/parser/JobsImportResultParser.html @@ -2,13 +2,13 @@ - + -JobsImportResultParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +JobsImportResultParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ JobsImportResultParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="JobsImportResultParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="JobsImportResultParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/ListParser.html b/apidocs/org/rundeck/api/parser/ListParser.html index 9ee451b..ea68e46 100644 --- a/apidocs/org/rundeck/api/parser/ListParser.html +++ b/apidocs/org/rundeck/api/parser/ListParser.html @@ -2,13 +2,13 @@ - + -ListParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +ListParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ ListParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ListParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="ListParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/NodeParser.html b/apidocs/org/rundeck/api/parser/NodeParser.html index f07bc3d..8ab2a69 100644 --- a/apidocs/org/rundeck/api/parser/NodeParser.html +++ b/apidocs/org/rundeck/api/parser/NodeParser.html @@ -2,13 +2,13 @@ - + -NodeParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +NodeParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ NodeParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="NodeParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="NodeParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/ParserHelper.html b/apidocs/org/rundeck/api/parser/ParserHelper.html index be06b36..99dcc0a 100644 --- a/apidocs/org/rundeck/api/parser/ParserHelper.html +++ b/apidocs/org/rundeck/api/parser/ParserHelper.html @@ -2,13 +2,13 @@ - + -ParserHelper (RunDeck API - Java Client 2.0-SNAPSHOT API) +ParserHelper (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ ParserHelper (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ParserHelper (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="ParserHelper (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/ProjectParser.html b/apidocs/org/rundeck/api/parser/ProjectParser.html index 0b538d5..748a8b2 100644 --- a/apidocs/org/rundeck/api/parser/ProjectParser.html +++ b/apidocs/org/rundeck/api/parser/ProjectParser.html @@ -2,13 +2,13 @@ - + -ProjectParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +ProjectParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ ProjectParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ProjectParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="ProjectParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/StringParser.html b/apidocs/org/rundeck/api/parser/StringParser.html index 63db53b..d73ed54 100644 --- a/apidocs/org/rundeck/api/parser/StringParser.html +++ b/apidocs/org/rundeck/api/parser/StringParser.html @@ -2,13 +2,13 @@ - + -StringParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +StringParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ StringParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="StringParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="StringParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/SystemInfoParser.html b/apidocs/org/rundeck/api/parser/SystemInfoParser.html index 3e28e31..b8b7feb 100644 --- a/apidocs/org/rundeck/api/parser/SystemInfoParser.html +++ b/apidocs/org/rundeck/api/parser/SystemInfoParser.html @@ -2,13 +2,13 @@ - + -SystemInfoParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +SystemInfoParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ SystemInfoParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="SystemInfoParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="SystemInfoParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/XmlNodeParser.html b/apidocs/org/rundeck/api/parser/XmlNodeParser.html index ed5c9ff..96b6eea 100644 --- a/apidocs/org/rundeck/api/parser/XmlNodeParser.html +++ b/apidocs/org/rundeck/api/parser/XmlNodeParser.html @@ -2,13 +2,13 @@ - + -XmlNodeParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +XmlNodeParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ XmlNodeParser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="XmlNodeParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="XmlNodeParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/AbortParser.html b/apidocs/org/rundeck/api/parser/class-use/AbortParser.html index f95b692..ac0343a 100644 --- a/apidocs/org/rundeck/api/parser/class-use/AbortParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/AbortParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.AbortParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.AbortParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.AbortParser (RunDeck API - Java Client 2.0- function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.AbortParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.AbortParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/EventParser.html b/apidocs/org/rundeck/api/parser/class-use/EventParser.html index 2ccb657..9f6ed28 100644 --- a/apidocs/org/rundeck/api/parser/class-use/EventParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/EventParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.EventParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.EventParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.EventParser (RunDeck API - Java Client 2.0- function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.EventParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.EventParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/ExecutionParser.html b/apidocs/org/rundeck/api/parser/class-use/ExecutionParser.html index 0c37790..4c35a89 100644 --- a/apidocs/org/rundeck/api/parser/class-use/ExecutionParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/ExecutionParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.ExecutionParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.ExecutionParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.ExecutionParser (RunDeck API - Java Client function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.ExecutionParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.ExecutionParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/HistoryParser.html b/apidocs/org/rundeck/api/parser/class-use/HistoryParser.html index 4fc925b..98c4c38 100644 --- a/apidocs/org/rundeck/api/parser/class-use/HistoryParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/HistoryParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.HistoryParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.HistoryParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.HistoryParser (RunDeck API - Java Client 2. function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.HistoryParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.HistoryParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/JobParser.html b/apidocs/org/rundeck/api/parser/class-use/JobParser.html index b827504..9daefc8 100644 --- a/apidocs/org/rundeck/api/parser/class-use/JobParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/JobParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.JobParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.JobParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.JobParser (RunDeck API - Java Client 2.0-SN function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.JobParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.JobParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/JobsImportResultParser.html b/apidocs/org/rundeck/api/parser/class-use/JobsImportResultParser.html index 5c9df41..73d64a8 100644 --- a/apidocs/org/rundeck/api/parser/class-use/JobsImportResultParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/JobsImportResultParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.JobsImportResultParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.JobsImportResultParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.JobsImportResultParser (RunDeck API - Java function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.JobsImportResultParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.JobsImportResultParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/ListParser.html b/apidocs/org/rundeck/api/parser/class-use/ListParser.html index 1fe7bb7..7927a3c 100644 --- a/apidocs/org/rundeck/api/parser/class-use/ListParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/ListParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.ListParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.ListParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.ListParser (RunDeck API - Java Client 2.0-S function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.ListParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.ListParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/NodeParser.html b/apidocs/org/rundeck/api/parser/class-use/NodeParser.html index 55a309d..4f8c5c4 100644 --- a/apidocs/org/rundeck/api/parser/class-use/NodeParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/NodeParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.NodeParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.NodeParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.NodeParser (RunDeck API - Java Client 2.0-S function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.NodeParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.NodeParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/ParserHelper.html b/apidocs/org/rundeck/api/parser/class-use/ParserHelper.html index 62794d7..1067fc0 100644 --- a/apidocs/org/rundeck/api/parser/class-use/ParserHelper.html +++ b/apidocs/org/rundeck/api/parser/class-use/ParserHelper.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.ParserHelper (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.ParserHelper (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.ParserHelper (RunDeck API - Java Client 2.0 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.ParserHelper (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.ParserHelper (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/ProjectParser.html b/apidocs/org/rundeck/api/parser/class-use/ProjectParser.html index 5bc1abd..56d3094 100644 --- a/apidocs/org/rundeck/api/parser/class-use/ProjectParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/ProjectParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.ProjectParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.ProjectParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.ProjectParser (RunDeck API - Java Client 2. function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.ProjectParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.ProjectParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/StringParser.html b/apidocs/org/rundeck/api/parser/class-use/StringParser.html index 04308cb..1769b25 100644 --- a/apidocs/org/rundeck/api/parser/class-use/StringParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/StringParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.StringParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.StringParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.StringParser (RunDeck API - Java Client 2.0 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.StringParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.StringParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/SystemInfoParser.html b/apidocs/org/rundeck/api/parser/class-use/SystemInfoParser.html index 6f9c50b..5903871 100644 --- a/apidocs/org/rundeck/api/parser/class-use/SystemInfoParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/SystemInfoParser.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.SystemInfoParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.parser.SystemInfoParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.SystemInfoParser (RunDeck API - Java Client function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.SystemInfoParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.SystemInfoParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/class-use/XmlNodeParser.html b/apidocs/org/rundeck/api/parser/class-use/XmlNodeParser.html index 9d5a479..a9bb09c 100644 --- a/apidocs/org/rundeck/api/parser/class-use/XmlNodeParser.html +++ b/apidocs/org/rundeck/api/parser/class-use/XmlNodeParser.html @@ -2,13 +2,13 @@ - + -Uses of Interface org.rundeck.api.parser.XmlNodeParser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Interface org.rundeck.api.parser.XmlNodeParser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Interface org.rundeck.api.parser.XmlNodeParser (RunDeck API - Java Clien function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Interface org.rundeck.api.parser.XmlNodeParser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Interface org.rundeck.api.parser.XmlNodeParser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/package-frame.html b/apidocs/org/rundeck/api/parser/package-frame.html index 85494cf..42060a0 100644 --- a/apidocs/org/rundeck/api/parser/package-frame.html +++ b/apidocs/org/rundeck/api/parser/package-frame.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api.parser (RunDeck API - Java Client 2.0 API) - + diff --git a/apidocs/org/rundeck/api/parser/package-summary.html b/apidocs/org/rundeck/api/parser/package-summary.html index 9b32ab4..72eb8c8 100644 --- a/apidocs/org/rundeck/api/parser/package-summary.html +++ b/apidocs/org/rundeck/api/parser/package-summary.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api.parser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="org.rundeck.api.parser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/package-tree.html b/apidocs/org/rundeck/api/parser/package-tree.html index 1721895..72fd670 100644 --- a/apidocs/org/rundeck/api/parser/package-tree.html +++ b/apidocs/org/rundeck/api/parser/package-tree.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.parser Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api.parser Class Hierarchy (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ org.rundeck.api.parser Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT A function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api.parser Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="org.rundeck.api.parser Class Hierarchy (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/parser/package-use.html b/apidocs/org/rundeck/api/parser/package-use.html index eb31223..9d072ba 100644 --- a/apidocs/org/rundeck/api/parser/package-use.html +++ b/apidocs/org/rundeck/api/parser/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Package org.rundeck.api.parser (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Package org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT A function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Package org.rundeck.api.parser (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/util/AssertUtil.html b/apidocs/org/rundeck/api/util/AssertUtil.html index 7bc8549..36b9c2c 100644 --- a/apidocs/org/rundeck/api/util/AssertUtil.html +++ b/apidocs/org/rundeck/api/util/AssertUtil.html @@ -2,13 +2,13 @@ - + -AssertUtil (RunDeck API - Java Client 2.0-SNAPSHOT API) +AssertUtil (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ AssertUtil (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="AssertUtil (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="AssertUtil (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/util/ParametersUtil.html b/apidocs/org/rundeck/api/util/ParametersUtil.html index 69afed7..838ab31 100644 --- a/apidocs/org/rundeck/api/util/ParametersUtil.html +++ b/apidocs/org/rundeck/api/util/ParametersUtil.html @@ -2,13 +2,13 @@ - + -ParametersUtil (RunDeck API - Java Client 2.0-SNAPSHOT API) +ParametersUtil (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ ParametersUtil (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ParametersUtil (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="ParametersUtil (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/util/class-use/AssertUtil.html b/apidocs/org/rundeck/api/util/class-use/AssertUtil.html index 2249480..ce245a7 100644 --- a/apidocs/org/rundeck/api/util/class-use/AssertUtil.html +++ b/apidocs/org/rundeck/api/util/class-use/AssertUtil.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.util.AssertUtil (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.util.AssertUtil (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.util.AssertUtil (RunDeck API - Java Client 2.0-SNA function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.util.AssertUtil (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.util.AssertUtil (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/util/class-use/ParametersUtil.html b/apidocs/org/rundeck/api/util/class-use/ParametersUtil.html index 9b32bc0..2196849 100644 --- a/apidocs/org/rundeck/api/util/class-use/ParametersUtil.html +++ b/apidocs/org/rundeck/api/util/class-use/ParametersUtil.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.util.ParametersUtil (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Class org.rundeck.api.util.ParametersUtil (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.util.ParametersUtil (RunDeck API - Java Client 2.0 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.util.ParametersUtil (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Class org.rundeck.api.util.ParametersUtil (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/util/package-frame.html b/apidocs/org/rundeck/api/util/package-frame.html index e833d06..5f1db4a 100644 --- a/apidocs/org/rundeck/api/util/package-frame.html +++ b/apidocs/org/rundeck/api/util/package-frame.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api.util (RunDeck API - Java Client 2.0 API) - + diff --git a/apidocs/org/rundeck/api/util/package-summary.html b/apidocs/org/rundeck/api/util/package-summary.html index eca3fcd..b0c57ac 100644 --- a/apidocs/org/rundeck/api/util/package-summary.html +++ b/apidocs/org/rundeck/api/util/package-summary.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api.util (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="org.rundeck.api.util (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/util/package-tree.html b/apidocs/org/rundeck/api/util/package-tree.html index c5e3b7b..bb48f24 100644 --- a/apidocs/org/rundeck/api/util/package-tree.html +++ b/apidocs/org/rundeck/api/util/package-tree.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.util Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API) +org.rundeck.api.util Class Hierarchy (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ org.rundeck.api.util Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api.util Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="org.rundeck.api.util Class Hierarchy (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/org/rundeck/api/util/package-use.html b/apidocs/org/rundeck/api/util/package-use.html index ae578fd..3e61f64 100644 --- a/apidocs/org/rundeck/api/util/package-use.html +++ b/apidocs/org/rundeck/api/util/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT API) +Uses of Package org.rundeck.api.util (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Uses of Package org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT API function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Uses of Package org.rundeck.api.util (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/overview-frame.html b/apidocs/overview-frame.html index b4f07f2..ae7566a 100644 --- a/apidocs/overview-frame.html +++ b/apidocs/overview-frame.html @@ -2,13 +2,13 @@ - + -Overview List (RunDeck API - Java Client 2.0-SNAPSHOT API) +Overview List (RunDeck API - Java Client 2.0 API) - + diff --git a/apidocs/overview-summary.html b/apidocs/overview-summary.html index d97130c..2489091 100644 --- a/apidocs/overview-summary.html +++ b/apidocs/overview-summary.html @@ -2,13 +2,13 @@ - + -Overview (RunDeck API - Java Client 2.0-SNAPSHOT API) +Overview (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Overview (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Overview (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Overview (RunDeck API - Java Client 2.0 API)"; } } @@ -82,7 +82,7 @@ function windowTitle()

-RunDeck API - Java Client 2.0-SNAPSHOT API +RunDeck API - Java Client 2.0 API

See the documentation of the RundeckClient class (main entry point of the API). diff --git a/apidocs/overview-tree.html b/apidocs/overview-tree.html index 5c8af66..32a6208 100644 --- a/apidocs/overview-tree.html +++ b/apidocs/overview-tree.html @@ -2,13 +2,13 @@ - + -Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API) +Class Hierarchy (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Class Hierarchy (RunDeck API - Java Client 2.0 API)"; } } diff --git a/apidocs/serialized-form.html b/apidocs/serialized-form.html index 5b858d6..1631e43 100644 --- a/apidocs/serialized-form.html +++ b/apidocs/serialized-form.html @@ -2,13 +2,13 @@ - + -Serialized Form (RunDeck API - Java Client 2.0-SNAPSHOT API) +Serialized Form (RunDeck API - Java Client 2.0 API) - + @@ -16,7 +16,7 @@ Serialized Form (RunDeck API - Java Client 2.0-SNAPSHOT API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Serialized Form (RunDeck API - Java Client 2.0-SNAPSHOT API)"; + parent.document.title="Serialized Form (RunDeck API - Java Client 2.0 API)"; } } diff --git a/changes-report.html b/changes-report.html index 5bd7f7e..b603b73 100644 --- a/changes-report.html +++ b/changes-report.html @@ -1,5 +1,5 @@ - + @@ -11,7 +11,7 @@ - + @@ -50,8 +50,8 @@
- Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

@@ -100,7 +100,7 @@
Older versions
Project Documentation
@@ -159,7 +159,7 @@
-

Changelog

Release History

VersionDateDescription
2.0Not Yet ReleasedAPI 2
1.22011-07-31Ad-hoc scripts + history events
1.12011-07-28Import / export jobs
1.02011-07-08Use RunDeck REST API version 1 (RunDeck 1.2+)

Release 2.0 - Not Yet Released

TypeChangesBy

add

Token-based authenticationvbehar

Release 1.2 - 2011-07-31

TypeChangesBy

add

Run ad-hoc scriptsvbehar

add

List history eventsvbehar

Release 1.1 - 2011-07-28

TypeChangesBy

add

Import jobs (XML or YAML)vbehar

add

YAML format is now supported when exporting jobs definitionsvbehar

add

Support for using an HTTP proxyvbehar

Release 1.0 - 2011-07-08

TypeChangesBy

add

Initial releasevbehar
+

Changelog

Release History

VersionDateDescription
2.02011-08-01Use RunDeck REST API version 2 (RunDeck 1.3+)
1.22011-07-31Ad-hoc scripts + history events
1.12011-07-28Import / export jobs
1.02011-07-08Use RunDeck REST API version 1 (RunDeck 1.2+)

Release 2.0 - 2011-08-01

TypeChangesBy

add

Token-based authenticationvbehar

Release 1.2 - 2011-07-31

TypeChangesBy

add

Run ad-hoc scriptsvbehar

add

List history eventsvbehar

Release 1.1 - 2011-07-28

TypeChangesBy

add

Import jobs (XML or YAML)vbehar

add

YAML format is now supported when exporting jobs definitionsvbehar

add

Support for using an HTTP proxyvbehar

Release 1.0 - 2011-07-08

TypeChangesBy

add

Initial releasevbehar
diff --git a/cpd.html b/cpd.html index ee84862..6a3e3b0 100644 --- a/cpd.html +++ b/cpd.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
- Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

@@ -99,7 +99,7 @@
Older versions
Project Documentation
diff --git a/cpd.xml b/cpd.xml index f27718c..d732ed4 100644 --- a/cpd.xml +++ b/cpd.xml @@ -1,8 +1,8 @@ - - + + - - + + - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
- Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

@@ -99,7 +99,7 @@
Older versions
Project Documentation
@@ -169,28 +169,28 @@ } } -

Dependency Tree

  • org.rundeck:rundeck-api-java-client:jar:2.0-SNAPSHOT Information
    • org.apache.httpcomponents:httpclient:jar:4.1.1 (compile) Information
      • org.apache.httpcomponents:httpcore:jar:4.1 (compile) Information
      • commons-logging:commons-logging:jar:1.1.1 (compile) Information
      • commons-codec:commons-codec:jar:1.4 (compile) Information
    • com.ibm.icu:icu4j:jar:2.6.1 (compile) Information
  • junit:junit:jar:4.8.2 (test) Information
  • Licenses

    LGPL: xom

    Unknown: Unnamed - com.ibm.icu:icu4j:jar:2.6.1, Unnamed - jdom:jdom:jar:1.0, Unnamed - xalan:xalan:jar:2.6.0, Unnamed - xerces:xercesImpl:jar:2.6.2, Unnamed - xerces:xmlParserAPIs:jar:2.6.2, dom4j, jaxen

    Apache License: HttpClient, HttpCore, HttpMime

    Common Public License Version 1.0: JUnit

    The Apache Software License, Version 2.0: Commons Codec, Commons IO, Commons Lang, Commons Logging, RunDeck API - Java Client, XML Commons External Components XML APIs

    Dependency File Details

    FilenameSizeEntriesClassesPackagesJDK RevDebugSealed
    icu4j-2.6.1.jar2.34 MB75564861.2debug-
    commons-codec-1.4.jar56.80 kB473051.4debug-
    commons-io-2.0.1.jar155.77 kB12210461.5debug-
    commons-lang-2.6.jar277.56 kB155133101.3debug-
    commons-logging-1.1.1.jar59.26 kB422821.1debug-
    dom4j-1.6.1.jar306.54 kB208190141.3debug-
    jaxen-1.1.1.jar221.60 kB236214171.2debug-
    jdom-1.0.jar149.66 kB877581.1debug-
    junit-4.8.2.jar231.78 kB267230301.5debug-
    httpclient-4.1.1.jar342.90 kB308272221.5debug-
    httpcore-4.1.jar176.80 kB185163101.3debug-
    httpmime-4.1.1.jar26.26 kB311521.5debug-
    xalan-2.6.0.jar3.00 MB1,6251,548501.1debug-
    xercesImpl-2.6.2.jar986.99 kB845784371.1release-
    xmlParserAPIs-2.6.2.jar121.80 kB238207171.1release-
    xml-apis-1.0.b2.jar106.76 kB217184171.2release-
    xom-1.0.jar106.32 kB1089661.2releasesealed
    TotalSizeEntriesClassesPackagesJDK RevDebugSealed
    178.59 MB5,4764,9212591.5131
    compile: 16compile: 8.36 MBcompile: 5,209compile: 4,691compile: 229-compile: 12compile: 1
    test: 1test: 231.78 kBtest: 267test: 230test: 30-test: 1-

    Dependency Repository Locations

    Repo IDURLReleaseSnapshot
    apache.snapshotshttp://people.apache.org/repo/m2-snapshot-repository-Yes-
    sonatype-nexus-snapshotshttps://oss.sonatype.org/content/repositories/snapshots-Yes-
    centralhttp://repo1.maven.org/maven2Yes--

    Repository locations for each of the Dependencies.

    Artifactapache.snapshotssonatype-nexus-snapshotscentral
    com.ibm.icu:icu4j:jar:2.6.1--Found at http://repo1.maven.org/maven2
    commons-codec:commons-codec:jar:1.4--Found at http://repo1.maven.org/maven2
    commons-io:commons-io:jar:2.0.1--Found at http://repo1.maven.org/maven2
    commons-lang:commons-lang:jar:2.6--Found at http://repo1.maven.org/maven2
    commons-logging:commons-logging:jar:1.1.1--Found at http://repo1.maven.org/maven2
    dom4j:dom4j:jar:1.6.1--Found at http://repo1.maven.org/maven2
    jaxen:jaxen:jar:1.1.1--Found at http://repo1.maven.org/maven2
    jdom:jdom:jar:1.0--Found at http://repo1.maven.org/maven2
    junit:junit:jar:4.8.2--Found at http://repo1.maven.org/maven2
    org.apache.httpcomponents:httpclient:jar:4.1.1--Found at http://repo1.maven.org/maven2
    org.apache.httpcomponents:httpcore:jar:4.1--Found at http://repo1.maven.org/maven2
    org.apache.httpcomponents:httpmime:jar:4.1.1--Found at http://repo1.maven.org/maven2
    xalan:xalan:jar:2.6.0--Found at http://repo1.maven.org/maven2
    xerces:xercesImpl:jar:2.6.2--Found at http://repo1.maven.org/maven2
    xerces:xmlParserAPIs:jar:2.6.2--Found at http://repo1.maven.org/maven2
    xml-apis:xml-apis:jar:1.0.b2--Found at http://repo1.maven.org/maven2
    xom:xom:jar:1.0--Found at http://repo1.maven.org/maven2
    Totalapache.snapshotssonatype-nexus-snapshotscentral
    17 (compile: 16, test: 1)0017
    diff --git a/dependency-updates-report.html b/dependency-updates-report.html index dcfcc90..0dc42a2 100644 --- a/dependency-updates-report.html +++ b/dependency-updates-report.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/distribution-management.html b/distribution-management.html index 8f58670..1d2b25f 100644 --- a/distribution-management.html +++ b/distribution-management.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/download.html b/download.html index fd30f79..9426554 100644 --- a/download.html +++ b/download.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/faq.html b/faq.html index 00dc18e..566b821 100644 --- a/faq.html +++ b/faq.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/findbugs.html b/findbugs.html index 6b7c94c..2e62d1d 100644 --- a/findbugs.html +++ b/findbugs.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/groovy.html b/groovy.html index aa3c6fb..10bb9ea 100644 --- a/groovy.html +++ b/groovy.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    @@ -121,7 +121,7 @@

    Using the RunDeck API from Groovy scripts

    Here are some examples of what you can do with this lib and a few lines of Groovy.

    We can use Grape to download the lib (and its dependencies) from the Maven Central Repository, so you don't have to install anything manually (except Groovy, of course).

    Basic usage

    Save the following script in a file named "rundeck.groovy", and execute it with "groovy rundeck.groovy". Feeling Groovy ? ;-)

    // we use Grape (Ivy) to download the lib (and its dependencies) from Maven Central Repository
    -@Grab(group='org.rundeck', module='rundeck-api-java-client', version='1.2')
    +@Grab(group='org.rundeck', module='rundeck-api-java-client', version='2.0')
     import org.rundeck.api.RundeckClient
     
     rundeck = new RundeckClient("http://localhost:4440", "admin", "admin")
    @@ -140,6 +140,11 @@ println "All RunDeck projects : ${rundeck.projects}"
     println "All RunDeck nodes : ${rundeck.nodes}"
     println "All RunDeck jobs : ${rundeck.jobs}"
     println "All RunDeck running executions : ${rundeck.runningExecutions}"
    +

    Authentication

    Starting with RunDeck API 2, there are 2 ways to authenticate :

    • the login-based authentication : with your login and password
    • the token-based authentication : with a unique token that you can generate from the RunDeck webUI
    // using login-based authentication (admin/admin is the default login/password for a new RunDeck instance) :
    +rundeck = new RundeckClient("http://localhost:4440", "admin", "admin");
    +
    +// using token-based authentication :
    +rundeck = new RundeckClient("http://localhost:4440", "PDDNKo5VE29kpk4prOUDr2rsKdRkEvsD");
     

    Running a job

    import org.rundeck.api.RundeckClient
     rundeck = new RundeckClient("http://localhost:4440", "admin", "admin")
     
    diff --git a/index.html b/index.html
    index 3da5445..1f94fdb 100644
    --- a/index.html
    +++ b/index.html
    @@ -1,5 +1,5 @@
     
    -
    +
     
       
         
    @@ -10,7 +10,7 @@
           @import url("./css/site.css");
         
         
    -    
    +    
         
             
               
    @@ -49,8 +49,8 @@
           
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/integration.html b/integration.html index 4a68899..e0f785a 100644 --- a/integration.html +++ b/integration.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/issue-tracking.html b/issue-tracking.html index 8606ad0..68a4591 100644 --- a/issue-tracking.html +++ b/issue-tracking.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/jruby.html b/jruby.html index c7665d6..86e4f91 100644 --- a/jruby.html +++ b/jruby.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    @@ -140,6 +140,11 @@ puts "All RunDeck projects : #{rundeck.projects}" puts "All RunDeck nodes : #{rundeck.nodes}" puts "All RunDeck jobs : #{rundeck.jobs}" puts "All RunDeck running executions : #{rundeck.runningExecutions}" +

    Authentication

    Starting with RunDeck API 2, there are 2 ways to authenticate :

    • the login-based authentication : with your login and password
    • the token-based authentication : with a unique token that you can generate from the RunDeck webUI
    // using login-based authentication (admin/admin is the default login/password for a new RunDeck instance) :
    +rundeck = RundeckClient.new("http://localhost:4440", "admin", "admin");
    +
    +// using token-based authentication :
    +rundeck = RundeckClient.new("http://localhost:4440", "PDDNKo5VE29kpk4prOUDr2rsKdRkEvsD");
     

    Running a job

    import org.rundeck.api.RundeckClient
     import org.rundeck.api.OptionsBuilder
     import org.rundeck.api.NodeFiltersBuilder
    diff --git a/jython.html b/jython.html
    index d91d4e3..72c633f 100644
    --- a/jython.html
    +++ b/jython.html
    @@ -1,5 +1,5 @@
     
    -
    +
     
       
         
    @@ -10,7 +10,7 @@
           @import url("./css/site.css");
         
         
    -    
    +    
         
             
               
    @@ -49,8 +49,8 @@
           
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    @@ -129,6 +129,11 @@ print("All RunDeck projects : %s" % rundeck.projects) print("All RunDeck nodes : %s" % rundeck.nodes) print("All RunDeck jobs : %s" % rundeck.jobs) print("All RunDeck running executions : %s" % rundeck.runningExecutions) +

    Authentication

    Starting with RunDeck API 2, there are 2 ways to authenticate :

    • the login-based authentication : with your login and password
    • the token-based authentication : with a unique token that you can generate from the RunDeck webUI
    // using login-based authentication (admin/admin is the default login/password for a new RunDeck instance) :
    +rundeck = RundeckClient("http://localhost:4440", "admin", "admin");
    +
    +// using token-based authentication :
    +rundeck = RundeckClient("http://localhost:4440", "PDDNKo5VE29kpk4prOUDr2rsKdRkEvsD");
     

    Running a job

    from org.rundeck.api import RundeckClient
     from org.rundeck.api import OptionsBuilder
     from org.rundeck.api import NodeFiltersBuilder
    diff --git a/license.html b/license.html
    index 66d38ec..539f7ae 100644
    --- a/license.html
    +++ b/license.html
    @@ -1,5 +1,5 @@
     
    -
    +
     
       
         
    @@ -10,7 +10,7 @@
           @import url("./css/site.css");
         
         
    -    
    +    
         
             
               
    @@ -49,8 +49,8 @@
           
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/mail-lists.html b/mail-lists.html index 33ba1aa..458d0b9 100644 --- a/mail-lists.html +++ b/mail-lists.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/plugin-updates-report.html b/plugin-updates-report.html index 2c8d07b..7bab036 100644 --- a/plugin-updates-report.html +++ b/plugin-updates-report.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/pmd.html b/pmd.html index 62182c1..68f9027 100644 --- a/pmd.html +++ b/pmd.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/pmd.xml b/pmd.xml index 854bbbb..f7f0911 100644 --- a/pmd.xml +++ b/pmd.xml @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/project-info.html b/project-info.html index 3f79199..2f812a5 100644 --- a/project-info.html +++ b/project-info.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/project-reports.html b/project-reports.html index 637be06..2236b72 100644 --- a/project-reports.html +++ b/project-reports.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/project-summary.html b/project-summary.html index 8bd862b..642adda 100644 --- a/project-summary.html +++ b/project-summary.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    @@ -152,7 +152,7 @@
    -

    Project Summary

    Project Information

    FieldValue
    NameRunDeck API - Java Client
    DescriptionJava client for the RunDeck REST API
    Homepagehttp://vbehar.github.com/rundeck-api-java-client

    Project Organization

    This project does not belong to an organization.

    Build Information

    FieldValue
    GroupIdorg.rundeck
    ArtifactIdrundeck-api-java-client
    Version2.0-SNAPSHOT
    Typejar
    JDK Rev1.6
    +

    Project Summary

    Project Information

    FieldValue
    NameRunDeck API - Java Client
    DescriptionJava client for the RunDeck REST API
    Homepagehttp://vbehar.github.com/rundeck-api-java-client

    Project Organization

    This project does not belong to an organization.

    Build Information

    FieldValue
    GroupIdorg.rundeck
    ArtifactIdrundeck-api-java-client
    Version2.0
    Typejar
    JDK Rev1.6
    diff --git a/property-updates-report.html b/property-updates-report.html index 37d201b..130c0fd 100644 --- a/property-updates-report.html +++ b/property-updates-report.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/scripting.html b/scripting.html index 331ffe6..2623fda 100644 --- a/scripting.html +++ b/scripting.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/source-repository.html b/source-repository.html index 2f1f25f..1a9016e 100644 --- a/source-repository.html +++ b/source-repository.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/status.html b/status.html index 001cce9..8839912 100644 --- a/status.html +++ b/status.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/taglist.html b/taglist.html index 5ff153d..a436ef5 100644 --- a/taglist.html +++ b/taglist.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/team-list.html b/team-list.html index 3dc1b6d..85ed50f 100644 --- a/team-list.html +++ b/team-list.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,7 @@ @import url("./css/site.css"); - + @@ -49,8 +49,8 @@
    - Last Published: 2011-07-31 -  | Version: 2.0-SNAPSHOT + Last Published: 2011-08-01 +  | Version: 2.0

    @@ -99,7 +99,7 @@
    Older versions
    Project Documentation
    diff --git a/testapidocs/allclasses-frame.html b/testapidocs/allclasses-frame.html index df28861..851f261 100644 --- a/testapidocs/allclasses-frame.html +++ b/testapidocs/allclasses-frame.html @@ -2,13 +2,13 @@ - + -All Classes (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +All Classes (RunDeck API - Java Client 2.0 Test API) - + diff --git a/testapidocs/allclasses-noframe.html b/testapidocs/allclasses-noframe.html index 048d005..9bec1d4 100644 --- a/testapidocs/allclasses-noframe.html +++ b/testapidocs/allclasses-noframe.html @@ -2,13 +2,13 @@ - + -All Classes (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +All Classes (RunDeck API - Java Client 2.0 Test API) - + diff --git a/testapidocs/constant-values.html b/testapidocs/constant-values.html index eac8bf7..dc55f7a 100644 --- a/testapidocs/constant-values.html +++ b/testapidocs/constant-values.html @@ -2,13 +2,13 @@ - + -Constant Field Values (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Constant Field Values (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Constant Field Values (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Constant Field Values (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Constant Field Values (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/deprecated-list.html b/testapidocs/deprecated-list.html index 8622fec..ee8cb20 100644 --- a/testapidocs/deprecated-list.html +++ b/testapidocs/deprecated-list.html @@ -2,13 +2,13 @@ - + -Deprecated List (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Deprecated List (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Deprecated List (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Deprecated List (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Deprecated List (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/help-doc.html b/testapidocs/help-doc.html index 0e382cd..e4ad5fa 100644 --- a/testapidocs/help-doc.html +++ b/testapidocs/help-doc.html @@ -2,13 +2,13 @@ - + -API Help (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +API Help (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ API Help (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="API Help (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="API Help (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/index-all.html b/testapidocs/index-all.html index 702c90c..93e3354 100644 --- a/testapidocs/index-all.html +++ b/testapidocs/index-all.html @@ -2,13 +2,13 @@ - + -Index (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Index (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Index (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Index (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Index (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/index.html b/testapidocs/index.html index d34bd2c..4381408 100644 --- a/testapidocs/index.html +++ b/testapidocs/index.html @@ -2,10 +2,10 @@ - + -RunDeck API - Java Client 2.0-SNAPSHOT Test API +RunDeck API - Java Client 2.0 Test API diff --git a/testapidocs/org/rundeck/api/parser/EventParserTest.html b/testapidocs/org/rundeck/api/parser/EventParserTest.html index 87071a1..9334eaa 100644 --- a/testapidocs/org/rundeck/api/parser/EventParserTest.html +++ b/testapidocs/org/rundeck/api/parser/EventParserTest.html @@ -2,13 +2,13 @@ - + -EventParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +EventParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ EventParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="EventParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="EventParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/ExecutionParserTest.html b/testapidocs/org/rundeck/api/parser/ExecutionParserTest.html index 3e639b9..2a46248 100644 --- a/testapidocs/org/rundeck/api/parser/ExecutionParserTest.html +++ b/testapidocs/org/rundeck/api/parser/ExecutionParserTest.html @@ -2,13 +2,13 @@ - + -ExecutionParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +ExecutionParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ ExecutionParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ExecutionParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="ExecutionParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/HistoryParserTest.html b/testapidocs/org/rundeck/api/parser/HistoryParserTest.html index f92249a..6cca1a9 100644 --- a/testapidocs/org/rundeck/api/parser/HistoryParserTest.html +++ b/testapidocs/org/rundeck/api/parser/HistoryParserTest.html @@ -2,13 +2,13 @@ - + -HistoryParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +HistoryParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ HistoryParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="HistoryParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="HistoryParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/JobParserTest.html b/testapidocs/org/rundeck/api/parser/JobParserTest.html index 42f8e88..8ab71e9 100644 --- a/testapidocs/org/rundeck/api/parser/JobParserTest.html +++ b/testapidocs/org/rundeck/api/parser/JobParserTest.html @@ -2,13 +2,13 @@ - + -JobParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +JobParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ JobParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="JobParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="JobParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/JobsImportResultParserTest.html b/testapidocs/org/rundeck/api/parser/JobsImportResultParserTest.html index ff84d0e..2f81d21 100644 --- a/testapidocs/org/rundeck/api/parser/JobsImportResultParserTest.html +++ b/testapidocs/org/rundeck/api/parser/JobsImportResultParserTest.html @@ -2,13 +2,13 @@ - + -JobsImportResultParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +JobsImportResultParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ JobsImportResultParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="JobsImportResultParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="JobsImportResultParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/ListParserTest.html b/testapidocs/org/rundeck/api/parser/ListParserTest.html index 670d565..80c179a 100644 --- a/testapidocs/org/rundeck/api/parser/ListParserTest.html +++ b/testapidocs/org/rundeck/api/parser/ListParserTest.html @@ -2,13 +2,13 @@ - + -ListParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +ListParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ ListParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ListParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="ListParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/NodeParserTest.html b/testapidocs/org/rundeck/api/parser/NodeParserTest.html index cb5afb4..52df615 100644 --- a/testapidocs/org/rundeck/api/parser/NodeParserTest.html +++ b/testapidocs/org/rundeck/api/parser/NodeParserTest.html @@ -2,13 +2,13 @@ - + -NodeParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +NodeParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ NodeParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="NodeParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="NodeParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/ParserHelperTest.html b/testapidocs/org/rundeck/api/parser/ParserHelperTest.html index 7aba5b7..7904ef9 100644 --- a/testapidocs/org/rundeck/api/parser/ParserHelperTest.html +++ b/testapidocs/org/rundeck/api/parser/ParserHelperTest.html @@ -2,13 +2,13 @@ - + -ParserHelperTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +ParserHelperTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ ParserHelperTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ParserHelperTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="ParserHelperTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/ProjectParserTest.html b/testapidocs/org/rundeck/api/parser/ProjectParserTest.html index 8c9c6e5..b0bb119 100644 --- a/testapidocs/org/rundeck/api/parser/ProjectParserTest.html +++ b/testapidocs/org/rundeck/api/parser/ProjectParserTest.html @@ -2,13 +2,13 @@ - + -ProjectParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +ProjectParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ ProjectParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ProjectParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="ProjectParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/StringParserTest.html b/testapidocs/org/rundeck/api/parser/StringParserTest.html index a67debe..6b31d7a 100644 --- a/testapidocs/org/rundeck/api/parser/StringParserTest.html +++ b/testapidocs/org/rundeck/api/parser/StringParserTest.html @@ -2,13 +2,13 @@ - + -StringParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +StringParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ StringParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="StringParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="StringParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/SystemInfoParserTest.html b/testapidocs/org/rundeck/api/parser/SystemInfoParserTest.html index 36578c9..fd4ba84 100644 --- a/testapidocs/org/rundeck/api/parser/SystemInfoParserTest.html +++ b/testapidocs/org/rundeck/api/parser/SystemInfoParserTest.html @@ -2,13 +2,13 @@ - + -SystemInfoParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +SystemInfoParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ SystemInfoParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="SystemInfoParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="SystemInfoParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/AbortParserTest.html b/testapidocs/org/rundeck/api/parser/class-use/AbortParserTest.html index 54f719a..5f65a21 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/AbortParserTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/AbortParserTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.AbortParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.AbortParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.AbortParserTest (RunDeck API - Java Client function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.AbortParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.AbortParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/EventParserTest.html b/testapidocs/org/rundeck/api/parser/class-use/EventParserTest.html index e42dce5..6ad38ad 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/EventParserTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/EventParserTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.EventParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.EventParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.EventParserTest (RunDeck API - Java Client function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.EventParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.EventParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/ExecutionParserTest.html b/testapidocs/org/rundeck/api/parser/class-use/ExecutionParserTest.html index 12536e9..8a274cb 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/ExecutionParserTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/ExecutionParserTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.ExecutionParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.ExecutionParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.ExecutionParserTest (RunDeck API - Java Cli function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.ExecutionParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.ExecutionParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/HistoryParserTest.html b/testapidocs/org/rundeck/api/parser/class-use/HistoryParserTest.html index 3f4909a..236e31e 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/HistoryParserTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/HistoryParserTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.HistoryParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.HistoryParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.HistoryParserTest (RunDeck API - Java Clien function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.HistoryParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.HistoryParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/JobParserTest.html b/testapidocs/org/rundeck/api/parser/class-use/JobParserTest.html index fb306a1..42e1d88 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/JobParserTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/JobParserTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.JobParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.JobParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.JobParserTest (RunDeck API - Java Client 2. function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.JobParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.JobParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/JobsImportResultParserTest.html b/testapidocs/org/rundeck/api/parser/class-use/JobsImportResultParserTest.html index ffbb65e..f699684 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/JobsImportResultParserTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/JobsImportResultParserTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.JobsImportResultParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.JobsImportResultParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.JobsImportResultParserTest (RunDeck API - J function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.JobsImportResultParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.JobsImportResultParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/ListParserTest.html b/testapidocs/org/rundeck/api/parser/class-use/ListParserTest.html index b8c296c..d81b11a 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/ListParserTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/ListParserTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.ListParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.ListParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.ListParserTest (RunDeck API - Java Client 2 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.ListParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.ListParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/NodeParserTest.html b/testapidocs/org/rundeck/api/parser/class-use/NodeParserTest.html index e04cc7f..c0425bc 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/NodeParserTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/NodeParserTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.NodeParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.NodeParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.NodeParserTest (RunDeck API - Java Client 2 function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.NodeParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.NodeParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/ParserHelperTest.html b/testapidocs/org/rundeck/api/parser/class-use/ParserHelperTest.html index e65d811..33619b9 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/ParserHelperTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/ParserHelperTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.ParserHelperTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.ParserHelperTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.ParserHelperTest (RunDeck API - Java Client function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.ParserHelperTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.ParserHelperTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/ProjectParserTest.html b/testapidocs/org/rundeck/api/parser/class-use/ProjectParserTest.html index f7c2c2a..ff2e45c 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/ProjectParserTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/ProjectParserTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.ProjectParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.ProjectParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.ProjectParserTest (RunDeck API - Java Clien function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.ProjectParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.ProjectParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/StringParserTest.html b/testapidocs/org/rundeck/api/parser/class-use/StringParserTest.html index 3e164d0..efacd13 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/StringParserTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/StringParserTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.StringParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.StringParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.StringParserTest (RunDeck API - Java Client function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.StringParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.StringParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/class-use/SystemInfoParserTest.html b/testapidocs/org/rundeck/api/parser/class-use/SystemInfoParserTest.html index f905a9a..f210979 100644 --- a/testapidocs/org/rundeck/api/parser/class-use/SystemInfoParserTest.html +++ b/testapidocs/org/rundeck/api/parser/class-use/SystemInfoParserTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.parser.SystemInfoParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.parser.SystemInfoParserTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.parser.SystemInfoParserTest (RunDeck API - Java Cl function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.parser.SystemInfoParserTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.parser.SystemInfoParserTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/package-frame.html b/testapidocs/org/rundeck/api/parser/package-frame.html index 3bafa6d..b4cb900 100644 --- a/testapidocs/org/rundeck/api/parser/package-frame.html +++ b/testapidocs/org/rundeck/api/parser/package-frame.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +org.rundeck.api.parser (RunDeck API - Java Client 2.0 Test API) - + diff --git a/testapidocs/org/rundeck/api/parser/package-summary.html b/testapidocs/org/rundeck/api/parser/package-summary.html index fe4b388..69d5fda 100644 --- a/testapidocs/org/rundeck/api/parser/package-summary.html +++ b/testapidocs/org/rundeck/api/parser/package-summary.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +org.rundeck.api.parser (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="org.rundeck.api.parser (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/package-tree.html b/testapidocs/org/rundeck/api/parser/package-tree.html index 3c603d1..3e2cd08 100644 --- a/testapidocs/org/rundeck/api/parser/package-tree.html +++ b/testapidocs/org/rundeck/api/parser/package-tree.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.parser Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +org.rundeck.api.parser Class Hierarchy (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ org.rundeck.api.parser Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT T function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api.parser Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="org.rundeck.api.parser Class Hierarchy (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/parser/package-use.html b/testapidocs/org/rundeck/api/parser/package-use.html index 109b94d..bfc3bee 100644 --- a/testapidocs/org/rundeck/api/parser/package-use.html +++ b/testapidocs/org/rundeck/api/parser/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Package org.rundeck.api.parser (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Package org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT T function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.rundeck.api.parser (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Package org.rundeck.api.parser (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/util/ParametersUtilTest.html b/testapidocs/org/rundeck/api/util/ParametersUtilTest.html index e9f76a1..dff40a4 100644 --- a/testapidocs/org/rundeck/api/util/ParametersUtilTest.html +++ b/testapidocs/org/rundeck/api/util/ParametersUtilTest.html @@ -2,13 +2,13 @@ - + -ParametersUtilTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +ParametersUtilTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ ParametersUtilTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ParametersUtilTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="ParametersUtilTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/util/class-use/ParametersUtilTest.html b/testapidocs/org/rundeck/api/util/class-use/ParametersUtilTest.html index ec7d24a..1706be1 100644 --- a/testapidocs/org/rundeck/api/util/class-use/ParametersUtilTest.html +++ b/testapidocs/org/rundeck/api/util/class-use/ParametersUtilTest.html @@ -2,13 +2,13 @@ - + -Uses of Class org.rundeck.api.util.ParametersUtilTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Class org.rundeck.api.util.ParametersUtilTest (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Class org.rundeck.api.util.ParametersUtilTest (RunDeck API - Java Client function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Class org.rundeck.api.util.ParametersUtilTest (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Class org.rundeck.api.util.ParametersUtilTest (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/util/package-frame.html b/testapidocs/org/rundeck/api/util/package-frame.html index 445cd4e..8042061 100644 --- a/testapidocs/org/rundeck/api/util/package-frame.html +++ b/testapidocs/org/rundeck/api/util/package-frame.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +org.rundeck.api.util (RunDeck API - Java Client 2.0 Test API) - + diff --git a/testapidocs/org/rundeck/api/util/package-summary.html b/testapidocs/org/rundeck/api/util/package-summary.html index 0650e32..4a9cb01 100644 --- a/testapidocs/org/rundeck/api/util/package-summary.html +++ b/testapidocs/org/rundeck/api/util/package-summary.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +org.rundeck.api.util (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="org.rundeck.api.util (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/util/package-tree.html b/testapidocs/org/rundeck/api/util/package-tree.html index a1fce1f..5ca1c35 100644 --- a/testapidocs/org/rundeck/api/util/package-tree.html +++ b/testapidocs/org/rundeck/api/util/package-tree.html @@ -2,13 +2,13 @@ - + -org.rundeck.api.util Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +org.rundeck.api.util Class Hierarchy (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ org.rundeck.api.util Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT Tes function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="org.rundeck.api.util Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="org.rundeck.api.util Class Hierarchy (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/org/rundeck/api/util/package-use.html b/testapidocs/org/rundeck/api/util/package-use.html index 351960e..29cc3dd 100644 --- a/testapidocs/org/rundeck/api/util/package-use.html +++ b/testapidocs/org/rundeck/api/util/package-use.html @@ -2,13 +2,13 @@ - + -Uses of Package org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Uses of Package org.rundeck.api.util (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Uses of Package org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT Tes function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Uses of Package org.rundeck.api.util (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Uses of Package org.rundeck.api.util (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/testapidocs/overview-frame.html b/testapidocs/overview-frame.html index 5fa9cff..ed743fc 100644 --- a/testapidocs/overview-frame.html +++ b/testapidocs/overview-frame.html @@ -2,13 +2,13 @@ - + -Overview List (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Overview List (RunDeck API - Java Client 2.0 Test API) - + diff --git a/testapidocs/overview-summary.html b/testapidocs/overview-summary.html index ee54874..7385b38 100644 --- a/testapidocs/overview-summary.html +++ b/testapidocs/overview-summary.html @@ -2,13 +2,13 @@ - + -Overview (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Overview (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Overview (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Overview (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Overview (RunDeck API - Java Client 2.0 Test API)"; } } @@ -82,7 +82,7 @@ function windowTitle()

    -RunDeck API - Java Client 2.0-SNAPSHOT Test API +RunDeck API - Java Client 2.0 Test API

    diff --git a/testapidocs/overview-tree.html b/testapidocs/overview-tree.html index 2284d30..43ad7c6 100644 --- a/testapidocs/overview-tree.html +++ b/testapidocs/overview-tree.html @@ -2,13 +2,13 @@ - + -Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT Test API) +Class Hierarchy (RunDeck API - Java Client 2.0 Test API) - + @@ -16,7 +16,7 @@ Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT Test API) function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Class Hierarchy (RunDeck API - Java Client 2.0-SNAPSHOT Test API)"; + parent.document.title="Class Hierarchy (RunDeck API - Java Client 2.0 Test API)"; } } diff --git a/xref-test/index.html b/xref-test/index.html index 0dc919f..579754f 100644 --- a/xref-test/index.html +++ b/xref-test/index.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference + RunDeck API - Java Client 2.0 Reference diff --git a/xref-test/org/rundeck/api/parser/package-frame.html b/xref-test/org/rundeck/api/parser/package-frame.html index 567e9d4..e79333c 100644 --- a/xref-test/org/rundeck/api/parser/package-frame.html +++ b/xref-test/org/rundeck/api/parser/package-frame.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api.parser + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api.parser diff --git a/xref-test/org/rundeck/api/parser/package-summary.html b/xref-test/org/rundeck/api/parser/package-summary.html index 5ae3578..631fd80 100644 --- a/xref-test/org/rundeck/api/parser/package-summary.html +++ b/xref-test/org/rundeck/api/parser/package-summary.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api.parser + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api.parser diff --git a/xref-test/org/rundeck/api/util/package-frame.html b/xref-test/org/rundeck/api/util/package-frame.html index efbe32e..4615f63 100644 --- a/xref-test/org/rundeck/api/util/package-frame.html +++ b/xref-test/org/rundeck/api/util/package-frame.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api.util + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api.util diff --git a/xref-test/org/rundeck/api/util/package-summary.html b/xref-test/org/rundeck/api/util/package-summary.html index f0e9bd9..3cb66cc 100644 --- a/xref-test/org/rundeck/api/util/package-summary.html +++ b/xref-test/org/rundeck/api/util/package-summary.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api.util + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api.util diff --git a/xref-test/overview-frame.html b/xref-test/overview-frame.html index 397ac0b..ec80e27 100644 --- a/xref-test/overview-frame.html +++ b/xref-test/overview-frame.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference + RunDeck API - Java Client 2.0 Reference diff --git a/xref-test/overview-summary.html b/xref-test/overview-summary.html index eeed918..bc1121b 100644 --- a/xref-test/overview-summary.html +++ b/xref-test/overview-summary.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference + RunDeck API - Java Client 2.0 Reference @@ -24,7 +24,7 @@
    -

    RunDeck API - Java Client 2.0-SNAPSHOT Reference

    +

    RunDeck API - Java Client 2.0 Reference

    diff --git a/xref/index.html b/xref/index.html index 0dc919f..579754f 100644 --- a/xref/index.html +++ b/xref/index.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference + RunDeck API - Java Client 2.0 Reference diff --git a/xref/org/rundeck/api/ApiCall.html b/xref/org/rundeck/api/ApiCall.html index d32edcd..d1a4e09 100644 --- a/xref/org/rundeck/api/ApiCall.html +++ b/xref/org/rundeck/api/ApiCall.html @@ -60,351 +60,389 @@ 50import org.apache.http.impl.client.DefaultHttpClient; 51import org.apache.http.impl.conn.ProxySelectorRoutePlanner; 52import org.apache.http.message.BasicNameValuePair; -53import org.apache.http.protocol.HTTP; -54import org.apache.http.protocol.HttpContext; -55import org.apache.http.util.EntityUtils; -56import org.dom4j.Document; -57import org.rundeck.api.RundeckApiException.RundeckApiLoginException; -58import org.rundeck.api.RundeckApiException.RundeckApiTokenException; -59import org.rundeck.api.parser.ParserHelper; -60import org.rundeck.api.parser.XmlNodeParser; -61import org.rundeck.api.util.AssertUtil; -62 -63/** -64 * Class responsible for making the HTTP API calls -65 * -66 * @author Vincent Behar -67 */ -68classApiCall { -69 -70/** RunDeck HTTP header for the auth-token (in case of token-based authentication) */ -71privatestaticfinaltransient String AUTH_TOKEN_HEADER = "X-RunDeck-Auth-Token"; -72 -73/** {@link RundeckClient} instance holding the RunDeck url and the credentials */ -74privatefinalRundeckClient client; -75 -76/** -77 * Build a new instance, linked to the given RunDeck client -78 * -79 * @param client holding the RunDeck url and the credentials -80 * @throws IllegalArgumentException if client is null -81 */ -82publicApiCall(RundeckClient client) throws IllegalArgumentException { -83super(); -84this.client = client; -85 AssertUtil.notNull(client, "The RunDeck Client must not be null !"); -86 } -87 -88/** -89 * Try to "ping" the RunDeck instance to see if it is alive -90 * -91 * @throws RundeckApiException if the ping fails -92 */ -93publicvoid ping() throws RundeckApiException { -94 HttpClient httpClient = instantiateHttpClient(); -95try { -96 HttpResponse response = httpClient.execute(new HttpGet(client.getUrl())); -97if (response.getStatusLine().getStatusCode() / 100 != 2) { -98thrownewRundeckApiException("Invalid HTTP response '" + response.getStatusLine() + "' when pinging " -99 + client.getUrl()); -100 } -101 } catch (IOException e) { -102thrownewRundeckApiException("Failed to ping RunDeck instance at " + client.getUrl(), e); -103 } finally { -104 httpClient.getConnectionManager().shutdown(); -105 } -106 } -107 -108/** -109 * Test the credentials (login/password) on the RunDeck instance -110 * -111 * @throws RundeckApiLoginException if the login fails -112 */ -113publicvoid testCredentials() throws RundeckApiLoginException { -114 HttpClient httpClient = instantiateHttpClient(); -115try { -116 login(httpClient); -117 } finally { -118 httpClient.getConnectionManager().shutdown(); -119 } -120 } -121 -122/** -123 * Execute an HTTP GET request to the RunDeck instance, on the given path. We will login first, and then execute the -124 * API call. At the end, the given parser will be used to convert the response to a more useful result object. -125 * -126 * @param apiPath on which we will make the HTTP request - see {@link ApiPathBuilder} -127 * @param parser used to parse the response -128 * @return the result of the call, as formatted by the parser -129 * @throws RundeckApiException in case of error when calling the API -130 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -131 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -132 */ -133public <T> T get(ApiPathBuilder apiPath, XmlNodeParser<T> parser) throws RundeckApiException, -134 RundeckApiLoginException, RundeckApiTokenException { -135return execute(new HttpGet(client.getUrl() + RundeckClient.API_ENDPOINT + apiPath), parser); -136 } -137 -138/** -139 * Execute an HTTP GET request to the RunDeck instance, on the given path. We will login first, and then execute the -140 * API call. -141 * -142 * @param apiPath on which we will make the HTTP request - see {@link ApiPathBuilder} -143 * @return a new {@link InputStream} instance, not linked with network resources -144 * @throws RundeckApiException in case of error when calling the API -145 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -146 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -147 */ -148public InputStream get(ApiPathBuilder apiPath) throws RundeckApiException, RundeckApiLoginException, -149RundeckApiTokenException { -150 ByteArrayInputStream response = execute(new HttpGet(client.getUrl() + RundeckClient.API_ENDPOINT + apiPath)); -151 -152// try to load the document, to throw an exception in case of error -153 ParserHelper.loadDocument(response); -154 response.reset(); -155 -156return response; -157 } -158 -159/** -160 * Execute an HTTP POST request to the RunDeck instance, on the given path. We will login first, and then execute -161 * the API call. At the end, the given parser will be used to convert the response to a more useful result object. -162 * -163 * @param apiPath on which we will make the HTTP request - see {@link ApiPathBuilder} -164 * @param parser used to parse the response -165 * @return the result of the call, as formatted by the parser -166 * @throws RundeckApiException in case of error when calling the API -167 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -168 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -169 */ -170public <T> T post(ApiPathBuilder apiPath, XmlNodeParser<T> parser) throws RundeckApiException, -171 RundeckApiLoginException, RundeckApiTokenException { -172 HttpPost httpPost = new HttpPost(client.getUrl() + RundeckClient.API_ENDPOINT + apiPath); -173 -174// POST a multi-part request, with all attachments -175 MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); -176for (Entry<String, InputStream> attachment : apiPath.getAttachments().entrySet()) { -177 entity.addPart(attachment.getKey(), new InputStreamBody(attachment.getValue(), attachment.getKey())); -178 } -179 httpPost.setEntity(entity); -180 -181return execute(httpPost, parser); -182 } -183 -184/** -185 * Execute an HTTP DELETE request to the RunDeck instance, on the given path. We will login first, and then execute -186 * the API call. At the end, the given parser will be used to convert the response to a more useful result object. -187 * -188 * @param apiPath on which we will make the HTTP request - see {@link ApiPathBuilder} -189 * @param parser used to parse the response -190 * @return the result of the call, as formatted by the parser -191 * @throws RundeckApiException in case of error when calling the API -192 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -193 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -194 */ -195public <T> T delete(ApiPathBuilder apiPath, XmlNodeParser<T> parser) throws RundeckApiException, -196 RundeckApiLoginException, RundeckApiTokenException { -197return execute(new HttpDelete(client.getUrl() + RundeckClient.API_ENDPOINT + apiPath), parser); -198 } -199 -200/** -201 * Execute an HTTP request to the RunDeck instance. We will login first, and then execute the API call. At the end, -202 * the given parser will be used to convert the response to a more useful result object. -203 * -204 * @param request to execute. see {@link HttpGet}, {@link HttpDelete}, and so on... -205 * @param parser used to parse the response -206 * @return the result of the call, as formatted by the parser -207 * @throws RundeckApiException in case of error when calling the API -208 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -209 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -210 */ -211private <T> T execute(HttpRequestBase request, XmlNodeParser<T> parser) throws RundeckApiException, -212 RundeckApiLoginException, RundeckApiTokenException { -213// execute the request -214 InputStream response = execute(request); +53import org.apache.http.params.HttpProtocolParams; +54import org.apache.http.protocol.HTTP; +55import org.apache.http.protocol.HttpContext; +56import org.apache.http.util.EntityUtils; +57import org.dom4j.Document; +58import org.rundeck.api.RundeckApiException.RundeckApiLoginException; +59import org.rundeck.api.RundeckApiException.RundeckApiTokenException; +60import org.rundeck.api.parser.ParserHelper; +61import org.rundeck.api.parser.XmlNodeParser; +62import org.rundeck.api.util.AssertUtil; +63 +64/** +65 * Class responsible for making the HTTP API calls +66 * +67 * @author Vincent Behar +68 */ +69classApiCall { +70 +71/** RunDeck HTTP header for the auth-token (in case of token-based authentication) */ +72privatestaticfinaltransient String AUTH_TOKEN_HEADER = "X-RunDeck-Auth-Token"; +73 +74/** {@link RundeckClient} instance holding the RunDeck url and the credentials */ +75privatefinalRundeckClient client; +76 +77/** +78 * Build a new instance, linked to the given RunDeck client +79 * +80 * @param client holding the RunDeck url and the credentials +81 * @throws IllegalArgumentException if client is null +82 */ +83publicApiCall(RundeckClient client) throws IllegalArgumentException { +84super(); +85this.client = client; +86 AssertUtil.notNull(client, "The RunDeck Client must not be null !"); +87 } +88 +89/** +90 * Try to "ping" the RunDeck instance to see if it is alive +91 * +92 * @throws RundeckApiException if the ping fails +93 */ +94publicvoid ping() throws RundeckApiException { +95 HttpClient httpClient = instantiateHttpClient(); +96try { +97 HttpResponse response = httpClient.execute(new HttpGet(client.getUrl())); +98if (response.getStatusLine().getStatusCode() / 100 != 2) { +99thrownewRundeckApiException("Invalid HTTP response '" + response.getStatusLine() + "' when pinging " +100 + client.getUrl()); +101 } +102 } catch (IOException e) { +103thrownewRundeckApiException("Failed to ping RunDeck instance at " + client.getUrl(), e); +104 } finally { +105 httpClient.getConnectionManager().shutdown(); +106 } +107 } +108 +109/** +110 * Test the authentication on the RunDeck instance. Will delegate to either {@link #testLoginAuth()} (in case of +111 * login-based auth) or {@link #testTokenAuth()} (in case of token-based auth). +112 * +113 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +114 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +115 * @see #testLoginAuth() +116 * @see #testTokenAuth() +117 */ +118publicvoid testAuth() throws RundeckApiLoginException, RundeckApiTokenException { +119if (client.getToken() != null) { +120 testTokenAuth(); +121 } else { +122 testLoginAuth(); +123 } +124 } +125 +126/** +127 * Test the login-based authentication on the RunDeck instance +128 * +129 * @throws RundeckApiLoginException if the login fails +130 * @see #testAuth() +131 */ +132publicvoid testLoginAuth() throws RundeckApiLoginException { +133 HttpClient httpClient = instantiateHttpClient(); +134try { +135 login(httpClient); +136 } finally { +137 httpClient.getConnectionManager().shutdown(); +138 } +139 } +140 +141/** +142 * Test the token-based authentication on the RunDeck instance +143 * +144 * @throws RundeckApiTokenException if the token is invalid +145 * @see #testAuth() +146 */ +147publicvoid testTokenAuth() throws RundeckApiTokenException { +148try { +149 execute(new HttpGet(client.getUrl() + RundeckClient.API_ENDPOINT + "/system/info")); +150 } catch (RundeckApiTokenException e) { +151throw e; +152 } catch (RundeckApiException e) { +153thrownewRundeckApiTokenException("Failed to verify token", e); +154 } +155 } +156 +157/** +158 * Execute an HTTP GET request to the RunDeck instance, on the given path. We will login first, and then execute the +159 * API call. At the end, the given parser will be used to convert the response to a more useful result object. +160 * +161 * @param apiPath on which we will make the HTTP request - see {@link ApiPathBuilder} +162 * @param parser used to parse the response +163 * @return the result of the call, as formatted by the parser +164 * @throws RundeckApiException in case of error when calling the API +165 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +166 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +167 */ +168public <T> T get(ApiPathBuilder apiPath, XmlNodeParser<T> parser) throws RundeckApiException, +169 RundeckApiLoginException, RundeckApiTokenException { +170return execute(new HttpGet(client.getUrl() + RundeckClient.API_ENDPOINT + apiPath), parser); +171 } +172 +173/** +174 * Execute an HTTP GET request to the RunDeck instance, on the given path. We will login first, and then execute the +175 * API call. +176 * +177 * @param apiPath on which we will make the HTTP request - see {@link ApiPathBuilder} +178 * @return a new {@link InputStream} instance, not linked with network resources +179 * @throws RundeckApiException in case of error when calling the API +180 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +181 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +182 */ +183public InputStream get(ApiPathBuilder apiPath) throws RundeckApiException, RundeckApiLoginException, +184RundeckApiTokenException { +185 ByteArrayInputStream response = execute(new HttpGet(client.getUrl() + RundeckClient.API_ENDPOINT + apiPath)); +186 +187// try to load the document, to throw an exception in case of error +188 ParserHelper.loadDocument(response); +189 response.reset(); +190 +191return response; +192 } +193 +194/** +195 * Execute an HTTP POST request to the RunDeck instance, on the given path. We will login first, and then execute +196 * the API call. At the end, the given parser will be used to convert the response to a more useful result object. +197 * +198 * @param apiPath on which we will make the HTTP request - see {@link ApiPathBuilder} +199 * @param parser used to parse the response +200 * @return the result of the call, as formatted by the parser +201 * @throws RundeckApiException in case of error when calling the API +202 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +203 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +204 */ +205public <T> T post(ApiPathBuilder apiPath, XmlNodeParser<T> parser) throws RundeckApiException, +206 RundeckApiLoginException, RundeckApiTokenException { +207 HttpPost httpPost = new HttpPost(client.getUrl() + RundeckClient.API_ENDPOINT + apiPath); +208 +209// POST a multi-part request, with all attachments +210 MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); +211for (Entry<String, InputStream> attachment : apiPath.getAttachments().entrySet()) { +212 entity.addPart(attachment.getKey(), new InputStreamBody(attachment.getValue(), attachment.getKey())); +213 } +214 httpPost.setEntity(entity); 215 -216// read and parse the response -217 Document xmlDocument = ParserHelper.loadDocument(response); -218return parser.parseXmlNode(xmlDocument); -219 } -220 -221/** -222 * Execute an HTTP request to the RunDeck instance. We will login first, and then execute the API call. -223 * -224 * @param request to execute. see {@link HttpGet}, {@link HttpDelete}, and so on... -225 * @return a new {@link InputStream} instance, not linked with network resources +216return execute(httpPost, parser); +217 } +218 +219/** +220 * Execute an HTTP DELETE request to the RunDeck instance, on the given path. We will login first, and then execute +221 * the API call. At the end, the given parser will be used to convert the response to a more useful result object. +222 * +223 * @param apiPath on which we will make the HTTP request - see {@link ApiPathBuilder} +224 * @param parser used to parse the response +225 * @return the result of the call, as formatted by the parser226 * @throws RundeckApiException in case of error when calling the API227 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication)228 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication)229 */ -230private ByteArrayInputStream execute(HttpRequestBase request) throws RundeckApiException, RundeckApiLoginException, -231RundeckApiTokenException { -232 HttpClient httpClient = instantiateHttpClient(); -233try { -234// we only need to manually login in case of login-based authentication -235// note that in case of token-based auth, the auth (via an HTTP header) is managed by an interceptor. -236if (client.getToken() == null) { -237 login(httpClient); -238 } -239 -240// execute the HTTP request -241 HttpResponse response = null; -242try { -243 response = httpClient.execute(request); -244 } catch (IOException e) { -245thrownewRundeckApiException("Failed to execute an HTTP " + request.getMethod() + " on url : " -246 + request.getURI(), e); -247 } -248 -249// in case of error, we get a redirect to /api/error -250// that we need to follow manually for POST and DELETE requests (as GET) -251if (response.getStatusLine().getStatusCode() / 100 == 3) { -252 String newLocation = response.getFirstHeader("Location").getValue(); -253try { -254 EntityUtils.consume(response.getEntity()); -255 } catch (IOException e) { -256thrownewRundeckApiException("Failed to consume entity (release connection)", e); -257 } -258 request = new HttpGet(newLocation); -259try { -260 response = httpClient.execute(request); -261 } catch (IOException e) { -262thrownewRundeckApiException("Failed to execute an HTTP GET on url : " + request.getURI(), e); -263 } -264 } -265 -266// check the response code (should be 2xx, even in case of error : error message is in the XML result) -267if (response.getStatusLine().getStatusCode() / 100 != 2) { -268if (response.getStatusLine().getStatusCode() == 403 && client.getToken() != null) { -269thrownewRundeckApiTokenException("Invalid Token ! Got HTTP response '" + response.getStatusLine() -270 + "' for " + request.getURI()); -271 } else { -272thrownewRundeckApiException("Invalid HTTP response '" + response.getStatusLine() + "' for " -273 + request.getURI()); -274 } -275 } -276if (response.getEntity() == null) { -277thrownewRundeckApiException("Empty RunDeck response ! HTTP status line is : " -278 + response.getStatusLine()); -279 } -280 -281// return a new inputStream, so that we can close all network resources -282try { -283returnnew ByteArrayInputStream(EntityUtils.toByteArray(response.getEntity())); -284 } catch (IOException e) { -285thrownewRundeckApiException("Failed to consume entity and convert the inputStream", e); -286 } -287 } finally { -288 httpClient.getConnectionManager().shutdown(); -289 } -290 } -291 -292/** -293 * Do the actual work of login, using the given {@link HttpClient} instance. You'll need to re-use this instance -294 * when making API calls (such as running a job). Only use this in case of login-based authentication. -295 * -296 * @param httpClient pre-instantiated -297 * @throws RundeckApiLoginException if the login failed -298 */ -299privatevoid login(HttpClient httpClient) throws RundeckApiLoginException { -300 String location = client.getUrl() + "/j_security_check"; -301 -302while (true) { -303 HttpPost postLogin = new HttpPost(location); -304 List<NameValuePair> params = new ArrayList<NameValuePair>(); -305 params.add(new BasicNameValuePair("j_username", client.getLogin())); -306 params.add(new BasicNameValuePair("j_password", client.getPassword())); -307 params.add(new BasicNameValuePair("action", "login")); -308 -309 HttpResponse response = null; -310try { -311 postLogin.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); -312 response = httpClient.execute(postLogin); -313 } catch (IOException e) { -314thrownewRundeckApiLoginException("Failed to post login form on " + location, e); -315 } -316 -317if (response.getStatusLine().getStatusCode() / 100 == 3) { -318// HTTP client refuses to handle redirects (code 3xx) for POST, so we have to do it manually... -319 location = response.getFirstHeader("Location").getValue(); -320try { -321 EntityUtils.consume(response.getEntity()); -322 } catch (IOException e) { -323thrownewRundeckApiLoginException("Failed to consume entity (release connection)", e); -324 } -325continue; -326 } -327if (response.getStatusLine().getStatusCode() / 100 != 2) { -328thrownewRundeckApiLoginException("Invalid HTTP response '" + response.getStatusLine() + "' for " -329 + location); -330 } -331try { -332 String content = EntityUtils.toString(response.getEntity(), HTTP.UTF_8); -333if (StringUtils.contains(content, "j_security_check")) { -334thrownewRundeckApiLoginException("Login failed for user " + client.getLogin()); -335 } -336try { -337 EntityUtils.consume(response.getEntity()); -338 } catch (IOException e) { -339thrownewRundeckApiLoginException("Failed to consume entity (release connection)", e); -340 } -341 } catch (IOException io) { -342thrownewRundeckApiLoginException("Failed to read RunDeck result", io); -343 } catch (ParseException p) { -344thrownewRundeckApiLoginException("Failed to parse RunDeck response", p); -345 } -346break; -347 } -348 } -349 -350/** -351 * Instantiate a new {@link HttpClient} instance, configured to accept all SSL certificates -352 * -353 * @return an {@link HttpClient} instance - won't be null -354 */ -355private HttpClient instantiateHttpClient() { -356 DefaultHttpClient httpClient = new DefaultHttpClient(); -357 -358// configure SSL -359 SSLSocketFactory socketFactory = null; -360try { -361 socketFactory = new SSLSocketFactory(new TrustStrategy() { -362 -363 @Override -364publicboolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { -365returntrue; -366 } -367 }, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); -368 } catch (KeyManagementException e) { -369thrownew RuntimeException(e); -370 } catch (UnrecoverableKeyException e) { -371thrownew RuntimeException(e); -372 } catch (NoSuchAlgorithmException e) { -373thrownew RuntimeException(e); -374 } catch (KeyStoreException e) { -375thrownew RuntimeException(e); -376 } -377 httpClient.getConnectionManager().getSchemeRegistry().register(new Scheme("https", 443, socketFactory)); -378 -379// configure proxy (use system env : http.proxyHost / http.proxyPort) -380 System.setProperty("java.net.useSystemProxies", "true"); -381 httpClient.setRoutePlanner(new ProxySelectorRoutePlanner(httpClient.getConnectionManager().getSchemeRegistry(), -382 ProxySelector.getDefault())); -383 -384// in case of token-based authentication, add the correct HTTP header to all requests via an interceptor -385 httpClient.addRequestInterceptor(new HttpRequestInterceptor() { -386 -387 @Override -388publicvoid process(HttpRequest request, HttpContext context) throws HttpException, IOException { -389if (client.getToken() != null) { -390 request.addHeader(AUTH_TOKEN_HEADER, client.getToken()); -391 } -392 } -393 }); -394 -395return httpClient; -396 } -397 } +230public <T> T delete(ApiPathBuilder apiPath, XmlNodeParser<T> parser) throws RundeckApiException, +231 RundeckApiLoginException, RundeckApiTokenException { +232return execute(new HttpDelete(client.getUrl() + RundeckClient.API_ENDPOINT + apiPath), parser); +233 } +234 +235/** +236 * Execute an HTTP request to the RunDeck instance. We will login first, and then execute the API call. At the end, +237 * the given parser will be used to convert the response to a more useful result object. +238 * +239 * @param request to execute. see {@link HttpGet}, {@link HttpDelete}, and so on... +240 * @param parser used to parse the response +241 * @return the result of the call, as formatted by the parser +242 * @throws RundeckApiException in case of error when calling the API +243 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +244 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +245 */ +246private <T> T execute(HttpRequestBase request, XmlNodeParser<T> parser) throws RundeckApiException, +247 RundeckApiLoginException, RundeckApiTokenException { +248// execute the request +249 InputStream response = execute(request); +250 +251// read and parse the response +252 Document xmlDocument = ParserHelper.loadDocument(response); +253return parser.parseXmlNode(xmlDocument); +254 } +255 +256/** +257 * Execute an HTTP request to the RunDeck instance. We will login first, and then execute the API call. +258 * +259 * @param request to execute. see {@link HttpGet}, {@link HttpDelete}, and so on... +260 * @return a new {@link InputStream} instance, not linked with network resources +261 * @throws RundeckApiException in case of error when calling the API +262 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +263 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +264 */ +265private ByteArrayInputStream execute(HttpRequestBase request) throws RundeckApiException, RundeckApiLoginException, +266RundeckApiTokenException { +267 HttpClient httpClient = instantiateHttpClient(); +268try { +269// we only need to manually login in case of login-based authentication +270// note that in case of token-based auth, the auth (via an HTTP header) is managed by an interceptor. +271if (client.getToken() == null) { +272 login(httpClient); +273 } +274 +275// execute the HTTP request +276 HttpResponse response = null; +277try { +278 response = httpClient.execute(request); +279 } catch (IOException e) { +280thrownewRundeckApiException("Failed to execute an HTTP " + request.getMethod() + " on url : " +281 + request.getURI(), e); +282 } +283 +284// in case of error, we get a redirect to /api/error +285// that we need to follow manually for POST and DELETE requests (as GET) +286if (response.getStatusLine().getStatusCode() / 100 == 3) { +287 String newLocation = response.getFirstHeader("Location").getValue(); +288try { +289 EntityUtils.consume(response.getEntity()); +290 } catch (IOException e) { +291thrownewRundeckApiException("Failed to consume entity (release connection)", e); +292 } +293 request = new HttpGet(newLocation); +294try { +295 response = httpClient.execute(request); +296 } catch (IOException e) { +297thrownewRundeckApiException("Failed to execute an HTTP GET on url : " + request.getURI(), e); +298 } +299 } +300 +301// check the response code (should be 2xx, even in case of error : error message is in the XML result) +302if (response.getStatusLine().getStatusCode() / 100 != 2) { +303if (response.getStatusLine().getStatusCode() == 403 && client.getToken() != null) { +304thrownewRundeckApiTokenException("Invalid Token ! Got HTTP response '" + response.getStatusLine() +305 + "' for " + request.getURI()); +306 } else { +307thrownewRundeckApiException("Invalid HTTP response '" + response.getStatusLine() + "' for " +308 + request.getURI()); +309 } +310 } +311if (response.getEntity() == null) { +312thrownewRundeckApiException("Empty RunDeck response ! HTTP status line is : " +313 + response.getStatusLine()); +314 } +315 +316// return a new inputStream, so that we can close all network resources +317try { +318returnnew ByteArrayInputStream(EntityUtils.toByteArray(response.getEntity())); +319 } catch (IOException e) { +320thrownewRundeckApiException("Failed to consume entity and convert the inputStream", e); +321 } +322 } finally { +323 httpClient.getConnectionManager().shutdown(); +324 } +325 } +326 +327/** +328 * Do the actual work of login, using the given {@link HttpClient} instance. You'll need to re-use this instance +329 * when making API calls (such as running a job). Only use this in case of login-based authentication. +330 * +331 * @param httpClient pre-instantiated +332 * @throws RundeckApiLoginException if the login failed +333 */ +334privatevoid login(HttpClient httpClient) throws RundeckApiLoginException { +335 String location = client.getUrl() + "/j_security_check"; +336 +337while (true) { +338 HttpPost postLogin = new HttpPost(location); +339 List<NameValuePair> params = new ArrayList<NameValuePair>(); +340 params.add(new BasicNameValuePair("j_username", client.getLogin())); +341 params.add(new BasicNameValuePair("j_password", client.getPassword())); +342 params.add(new BasicNameValuePair("action", "login")); +343 +344 HttpResponse response = null; +345try { +346 postLogin.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); +347 response = httpClient.execute(postLogin); +348 } catch (IOException e) { +349thrownewRundeckApiLoginException("Failed to post login form on " + location, e); +350 } +351 +352if (response.getStatusLine().getStatusCode() / 100 == 3) { +353// HTTP client refuses to handle redirects (code 3xx) for POST, so we have to do it manually... +354 location = response.getFirstHeader("Location").getValue(); +355try { +356 EntityUtils.consume(response.getEntity()); +357 } catch (IOException e) { +358thrownewRundeckApiLoginException("Failed to consume entity (release connection)", e); +359 } +360continue; +361 } +362if (response.getStatusLine().getStatusCode() / 100 != 2) { +363thrownewRundeckApiLoginException("Invalid HTTP response '" + response.getStatusLine() + "' for " +364 + location); +365 } +366try { +367 String content = EntityUtils.toString(response.getEntity(), HTTP.UTF_8); +368if (StringUtils.contains(content, "j_security_check")) { +369thrownewRundeckApiLoginException("Login failed for user " + client.getLogin()); +370 } +371try { +372 EntityUtils.consume(response.getEntity()); +373 } catch (IOException e) { +374thrownewRundeckApiLoginException("Failed to consume entity (release connection)", e); +375 } +376 } catch (IOException io) { +377thrownewRundeckApiLoginException("Failed to read RunDeck result", io); +378 } catch (ParseException p) { +379thrownewRundeckApiLoginException("Failed to parse RunDeck response", p); +380 } +381break; +382 } +383 } +384 +385/** +386 * Instantiate a new {@link HttpClient} instance, configured to accept all SSL certificates +387 * +388 * @return an {@link HttpClient} instance - won't be null +389 */ +390private HttpClient instantiateHttpClient() { +391 DefaultHttpClient httpClient = new DefaultHttpClient(); +392 +393// configure user-agent +394 HttpProtocolParams.setUserAgent(httpClient.getParams(), "RunDeck API Java Client " + RundeckClient.API_VERSION); +395 +396// configure SSL +397 SSLSocketFactory socketFactory = null; +398try { +399 socketFactory = new SSLSocketFactory(new TrustStrategy() { +400 +401 @Override +402publicboolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { +403returntrue; +404 } +405 }, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); +406 } catch (KeyManagementException e) { +407thrownew RuntimeException(e); +408 } catch (UnrecoverableKeyException e) { +409thrownew RuntimeException(e); +410 } catch (NoSuchAlgorithmException e) { +411thrownew RuntimeException(e); +412 } catch (KeyStoreException e) { +413thrownew RuntimeException(e); +414 } +415 httpClient.getConnectionManager().getSchemeRegistry().register(new Scheme("https", 443, socketFactory)); +416 +417// configure proxy (use system env : http.proxyHost / http.proxyPort) +418 System.setProperty("java.net.useSystemProxies", "true"); +419 httpClient.setRoutePlanner(new ProxySelectorRoutePlanner(httpClient.getConnectionManager().getSchemeRegistry(), +420 ProxySelector.getDefault())); +421 +422// in case of token-based authentication, add the correct HTTP header to all requests via an interceptor +423 httpClient.addRequestInterceptor(new HttpRequestInterceptor() { +424 +425 @Override +426publicvoid process(HttpRequest request, HttpContext context) throws HttpException, IOException { +427if (client.getToken() != null) { +428 request.addHeader(AUTH_TOKEN_HEADER, client.getToken()); +429 } +430 } +431 }); +432 +433return httpClient; +434 } +435 }
    diff --git a/xref/org/rundeck/api/RundeckClient.html b/xref/org/rundeck/api/RundeckClient.html index f6d94cd..d5330c0 100644 --- a/xref/org/rundeck/api/RundeckClient.html +++ b/xref/org/rundeck/api/RundeckClient.html @@ -42,14 +42,14 @@ 32import org.rundeck.api.RundeckApiException.RundeckApiTokenException; 33import org.rundeck.api.domain.RundeckAbort; 34import org.rundeck.api.domain.RundeckExecution; -35import org.rundeck.api.domain.RundeckExecution.ExecutionStatus; -36import org.rundeck.api.domain.RundeckHistory; -37import org.rundeck.api.domain.RundeckJob; -38import org.rundeck.api.domain.RundeckJobsImportMethod; -39import org.rundeck.api.domain.RundeckJobsImportResult; -40import org.rundeck.api.domain.RundeckNode; -41import org.rundeck.api.domain.RundeckProject; -42import org.rundeck.api.domain.RundeckSystemInfo; +35import org.rundeck.api.domain.RundeckHistory; +36import org.rundeck.api.domain.RundeckJob; +37import org.rundeck.api.domain.RundeckJobsImportMethod; +38import org.rundeck.api.domain.RundeckJobsImportResult; +39import org.rundeck.api.domain.RundeckNode; +40import org.rundeck.api.domain.RundeckProject; +41import org.rundeck.api.domain.RundeckSystemInfo; +42import org.rundeck.api.domain.RundeckExecution.ExecutionStatus; 43import org.rundeck.api.parser.AbortParser; 44import org.rundeck.api.parser.ExecutionParser; 45import org.rundeck.api.parser.HistoryParser; @@ -168,2233 +168,2243 @@ 158 } 159160/** -161 * Test your credentials (login/password) on the RunDeck instance +161 * Test the authentication on the RunDeck instance.162 * -163 * @throws RundeckApiLoginException if the login fails -164 */ -165publicvoid testCredentials() throws RundeckApiLoginException { -166newApiCall(this).testCredentials(); -167 } -168 -169/* -170 * Projects -171 */ -172 -173/** -174 * List all projects -175 * -176 * @return a {@link List} of {@link RundeckProject} : might be empty, but won't be null -177 * @throws RundeckApiException in case of error when calling the API -178 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -179 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -180 */ -181public List<RundeckProject> getProjects() throws RundeckApiException, RundeckApiLoginException, -182RundeckApiTokenException { -183returnnewApiCall(this).get(newApiPathBuilder("/projects"), -184new ListParser<RundeckProject>(newProjectParser(), "result/projects/project")); -185 } -186 -187/** -188 * Get the definition of a single project, identified by the given name -189 * -190 * @param projectName name of the project - mandatory -191 * @return a {@link RundeckProject} instance - won't be null -192 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -193 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -194 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -195 * @throws IllegalArgumentException if the projectName is blank (null, empty or whitespace) -196 */ -197publicRundeckProject getProject(String projectName) throws RundeckApiException, RundeckApiLoginException, -198 RundeckApiTokenException, IllegalArgumentException { -199 AssertUtil.notBlank(projectName, "projectName is mandatory to get the details of a project !"); -200returnnewApiCall(this).get(newApiPathBuilder("/project/", projectName), -201newProjectParser("result/projects/project")); -202 } -203 -204/* -205 * Jobs -206 */ -207 -208/** -209 * List all jobs (for all projects) -210 * -211 * @return a {@link List} of {@link RundeckJob} : might be empty, but won't be null -212 * @throws RundeckApiException in case of error when calling the API -213 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -214 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -215 */ -216public List<RundeckJob> getJobs() throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException { -217 List<RundeckJob> jobs = new ArrayList<RundeckJob>(); -218for (RundeckProject project : getProjects()) { -219 jobs.addAll(getJobs(project.getName())); -220 } -221return jobs; -222 } -223 -224/** -225 * List all jobs that belongs to the given project -226 * -227 * @param project name of the project - mandatory -228 * @return a {@link List} of {@link RundeckJob} : might be empty, but won't be null -229 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -230 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -231 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -232 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -233 * @see #getJobs(String, String, String, String...) -234 */ -235public List<RundeckJob> getJobs(String project) throws RundeckApiException, RundeckApiLoginException, -236 RundeckApiTokenException, IllegalArgumentException { -237return getJobs(project, null, null, new String[0]); -238 } -239 -240/** -241 * List the jobs that belongs to the given project, and matches the given criteria (jobFilter, groupPath and jobIds) -242 * -243 * @param project name of the project - mandatory -244 * @param jobFilter a filter for the job Name - optional -245 * @param groupPath a group or partial group path to include all jobs within that group path - optional -246 * @param jobIds a list of Job IDs to include - optional -247 * @return a {@link List} of {@link RundeckJob} : might be empty, but won't be null -248 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -249 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -250 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -251 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -252 * @see #getJobs(String) -253 */ -254public List<RundeckJob> getJobs(String project, String jobFilter, String groupPath, String... jobIds) -255throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -256 AssertUtil.notBlank(project, "project is mandatory to get all jobs !"); -257returnnewApiCall(this).get(newApiPathBuilder("/jobs").param("project", project) -258 .param("jobFilter", jobFilter) -259 .param("groupPath", groupPath) -260 .param("idlist", StringUtils.join(jobIds, ",")), -261new ListParser<RundeckJob>(newJobParser(), "result/jobs/job")); -262 } -263 -264/** -265 * Export the definitions of all jobs that belongs to the given project -266 * -267 * @param filename path of the file where the content should be saved - mandatory -268 * @param format of the export. See {@link FileType} - mandatory -269 * @param project name of the project - mandatory -270 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -271 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -272 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -273 * @throws IllegalArgumentException if the format or project is blank (null, empty or whitespace), or the format is -274 * invalid -275 * @throws IOException if we failed to write to the file -276 * @see #exportJobsToFile(String, FileType, String, String, String, String...) -277 * @see #exportJobs(String, String) -278 */ -279publicvoid exportJobsToFile(String filename, String format, String project) throws RundeckApiException, -280 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -281 AssertUtil.notBlank(format, "format is mandatory to export jobs !"); -282 exportJobsToFile(filename, FileType.valueOf(StringUtils.upperCase(format)), project); -283 } -284 -285/** -286 * Export the definitions of all jobs that belongs to the given project -287 * -288 * @param filename path of the file where the content should be saved - mandatory -289 * @param format of the export. See {@link FileType} - mandatory -290 * @param project name of the project - mandatory -291 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -292 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -293 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -294 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the format is null -295 * @throws IOException if we failed to write to the file -296 * @see #exportJobsToFile(String, FileType, String, String, String, String...) -297 * @see #exportJobs(FileType, String) -298 */ -299publicvoid exportJobsToFile(String filename, FileType format, String project) throws RundeckApiException, -300 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -301 exportJobsToFile(filename, format, project, null, null, new String[0]); -302 } -303 -304/** -305 * Export the definitions of the jobs that belongs to the given project, and matches the given criteria (jobFilter, -306 * groupPath and jobIds) -307 * -308 * @param filename path of the file where the content should be saved - mandatory -309 * @param format of the export. See {@link FileType} - mandatory -310 * @param project name of the project - mandatory -311 * @param jobFilter a filter for the job Name - optional -312 * @param groupPath a group or partial group path to include all jobs within that group path - optional -313 * @param jobIds a list of Job IDs to include - optional -314 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -315 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -316 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -317 * @throws IllegalArgumentException if the filename, format or project is blank (null, empty or whitespace), or the -318 * format is invalid -319 * @throws IOException if we failed to write to the file -320 * @see #exportJobsToFile(String, FileType, String, String, String, String...) -321 * @see #exportJobs(FileType, String, String, String, String...) -322 */ -323publicvoid exportJobsToFile(String filename, String format, String project, String jobFilter, String groupPath, -324 String... jobIds) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, -325 IllegalArgumentException, IOException { -326 AssertUtil.notBlank(format, "format is mandatory to export jobs !"); -327 exportJobsToFile(filename, -328 FileType.valueOf(StringUtils.upperCase(format)), -329 project, -330 jobFilter, -331 groupPath, -332 jobIds); -333 } -334 -335/** -336 * Export the definitions of the jobs that belongs to the given project, and matches the given criteria (jobFilter, -337 * groupPath and jobIds) -338 * -339 * @param filename path of the file where the content should be saved - mandatory -340 * @param format of the export. See {@link FileType} - mandatory -341 * @param project name of the project - mandatory -342 * @param jobFilter a filter for the job Name - optional -343 * @param groupPath a group or partial group path to include all jobs within that group path - optional -344 * @param jobIds a list of Job IDs to include - optional -345 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -346 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -347 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -348 * @throws IllegalArgumentException if the filename or project is blank (null, empty or whitespace), or the format -349 * is null -350 * @throws IOException if we failed to write to the file -351 * @see #exportJobs(FileType, String, String, String, String...) -352 */ -353publicvoid exportJobsToFile(String filename, FileType format, String project, String jobFilter, String groupPath, -354 String... jobIds) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, -355 IllegalArgumentException, IOException { -356 AssertUtil.notBlank(filename, "filename is mandatory to export a job !"); -357 InputStream inputStream = exportJobs(format, project, jobFilter, groupPath, jobIds); -358 FileUtils.writeByteArrayToFile(new File(filename), IOUtils.toByteArray(inputStream)); -359 } -360 -361/** -362 * Export the definitions of all jobs that belongs to the given project -363 * -364 * @param format of the export. See {@link FileType} - mandatory -365 * @param project name of the project - mandatory -366 * @return an {@link InputStream} instance, not linked to any network resources - won't be null -367 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -368 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -369 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -370 * @throws IllegalArgumentException if the format or project is blank (null, empty or whitespace), or the format is -371 * invalid -372 * @see #exportJobs(FileType, String, String, String, String...) -373 * @see #exportJobsToFile(String, String, String) -374 */ -375public InputStream exportJobs(String format, String project) throws RundeckApiException, RundeckApiLoginException, -376 RundeckApiTokenException, IllegalArgumentException { -377 AssertUtil.notBlank(format, "format is mandatory to export jobs !"); -378return exportJobs(FileType.valueOf(StringUtils.upperCase(format)), project); -379 } -380 -381/** -382 * Export the definitions of all jobs that belongs to the given project -383 * -384 * @param format of the export. See {@link FileType} - mandatory -385 * @param project name of the project - mandatory -386 * @return an {@link InputStream} instance, not linked to any network resources - won't be null -387 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -388 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -389 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -390 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the format is null -391 * @see #exportJobs(FileType, String, String, String, String...) -392 * @see #exportJobsToFile(String, FileType, String) -393 */ -394public InputStream exportJobs(FileType format, String project) throws RundeckApiException, -395 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -396return exportJobs(format, project, null, null, new String[0]); -397 } -398 -399/** -400 * Export the definitions of the jobs that belongs to the given project, and matches the given criteria (jobFilter, -401 * groupPath and jobIds) -402 * -403 * @param format of the export. See {@link FileType} - mandatory -404 * @param project name of the project - mandatory -405 * @param jobFilter a filter for the job Name - optional -406 * @param groupPath a group or partial group path to include all jobs within that group path - optional -407 * @param jobIds a list of Job IDs to include - optional -408 * @return an {@link InputStream} instance, not linked to any network resources - won't be null -409 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -410 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -411 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -412 * @throws IllegalArgumentException if the format or project is blank (null, empty or whitespace), or the format is -413 * invalid -414 * @see #exportJobs(FileType, String, String, String, String...) -415 * @see #exportJobsToFile(String, String, String, String, String, String...) -416 */ -417public InputStream exportJobs(String format, String project, String jobFilter, String groupPath, String... jobIds) -418throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -419 AssertUtil.notBlank(format, "format is mandatory to export jobs !"); -420return exportJobs(FileType.valueOf(StringUtils.upperCase(format)), project, jobFilter, groupPath, jobIds); -421 } -422 -423/** -424 * Export the definitions of the jobs that belongs to the given project, and matches the given criteria (jobFilter, -425 * groupPath and jobIds) -426 * -427 * @param format of the export. See {@link FileType} - mandatory -428 * @param project name of the project - mandatory -429 * @param jobFilter a filter for the job Name - optional -430 * @param groupPath a group or partial group path to include all jobs within that group path - optional -431 * @param jobIds a list of Job IDs to include - optional -432 * @return an {@link InputStream} instance, not linked to any network resources - won't be null -433 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -434 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -435 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -436 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the format is null -437 * @see #exportJobsToFile(String, FileType, String, String, String, String...) -438 */ -439public InputStream exportJobs(FileType format, String project, String jobFilter, String groupPath, String... jobIds) -440throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -441 AssertUtil.notNull(format, "format is mandatory to export jobs !"); -442 AssertUtil.notBlank(project, "project is mandatory to export jobs !"); -443returnnewApiCall(this).get(newApiPathBuilder("/jobs/export").param("format", format) -444 .param("project", project) -445 .param("jobFilter", jobFilter) -446 .param("groupPath", groupPath) -447 .param("idlist", StringUtils.join(jobIds, ","))); -448 } -449 -450/** -451 * Export the definition of a single job (identified by the given ID) -452 * -453 * @param filename path of the file where the content should be saved - mandatory -454 * @param format of the export. See {@link FileType} - mandatory -455 * @param jobId identifier of the job - mandatory -456 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -457 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -458 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -459 * @throws IllegalArgumentException if the filename, format or jobId is blank (null, empty or whitespace), or the -460 * format is invalid -461 * @throws IOException if we failed to write to the file -462 * @see #exportJobToFile(String, FileType, String) -463 * @see #exportJob(String, String) -464 * @see #getJob(String) -465 */ -466publicvoid exportJobToFile(String filename, String format, String jobId) throws RundeckApiException, -467 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -468 AssertUtil.notBlank(format, "format is mandatory to export a job !"); -469 exportJobToFile(filename, FileType.valueOf(StringUtils.upperCase(format)), jobId); -470 } -471 -472/** -473 * Export the definition of a single job (identified by the given ID) -474 * -475 * @param filename path of the file where the content should be saved - mandatory -476 * @param format of the export. See {@link FileType} - mandatory -477 * @param jobId identifier of the job - mandatory -478 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -479 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -480 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -481 * @throws IllegalArgumentException if the filename or jobId is blank (null, empty or whitespace), or the format is -482 * null -483 * @throws IOException if we failed to write to the file -484 * @see #exportJob(FileType, String) -485 * @see #getJob(String) -486 */ -487publicvoid exportJobToFile(String filename, FileType format, String jobId) throws RundeckApiException, -488 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -489 AssertUtil.notBlank(filename, "filename is mandatory to export a job !"); -490 InputStream inputStream = exportJob(format, jobId); -491 FileUtils.writeByteArrayToFile(new File(filename), IOUtils.toByteArray(inputStream)); -492 } -493 -494/** -495 * Export the definition of a single job, identified by the given ID -496 * -497 * @param format of the export. See {@link FileType} - mandatory -498 * @param jobId identifier of the job - mandatory -499 * @return an {@link InputStream} instance, not linked to any network resources - won't be null -500 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -501 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -502 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -503 * @throws IllegalArgumentException if the format or jobId is blank (null, empty or whitespace), or the format is -504 * invalid -505 * @see #exportJobToFile(String, String, String) -506 * @see #getJob(String) -507 */ -508public InputStream exportJob(String format, String jobId) throws RundeckApiException, RundeckApiLoginException, -509 RundeckApiTokenException, IllegalArgumentException { -510 AssertUtil.notBlank(format, "format is mandatory to export a job !"); -511return exportJob(FileType.valueOf(StringUtils.upperCase(format)), jobId); -512 } -513 -514/** -515 * Export the definition of a single job, identified by the given ID -516 * -517 * @param format of the export. See {@link FileType} - mandatory -518 * @param jobId identifier of the job - mandatory -519 * @return an {@link InputStream} instance, not linked to any network resources - won't be null -520 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -521 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -522 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -523 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace), or the format is null -524 * @see #exportJobToFile(String, FileType, String) -525 * @see #getJob(String) -526 */ -527public InputStream exportJob(FileType format, String jobId) throws RundeckApiException, RundeckApiLoginException, -528 RundeckApiTokenException, IllegalArgumentException { -529 AssertUtil.notNull(format, "format is mandatory to export a job !"); -530 AssertUtil.notBlank(jobId, "jobId is mandatory to export a job !"); -531returnnewApiCall(this).get(newApiPathBuilder("/job/", jobId).param("format", format)); -532 } -533 -534/** -535 * Import the definitions of jobs, from the given file -536 * -537 * @param filename of the file containing the jobs definitions - mandatory -538 * @param fileType type of the file. See {@link FileType} - mandatory -539 * @return a {@link RundeckJobsImportResult} instance - won't be null -540 * @throws RundeckApiException in case of error when calling the API -541 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -542 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -543 * @throws IllegalArgumentException if the filename or fileType is blank (null, empty or whitespace), or the -544 * fileType is invalid -545 * @throws IOException if we failed to read the file -546 * @see #importJobs(InputStream, String) -547 * @see #importJobs(String, FileType, RundeckJobsImportMethod) -548 */ -549publicRundeckJobsImportResult importJobs(String filename, String fileType) throws RundeckApiException, -550 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -551 AssertUtil.notBlank(fileType, "fileType is mandatory to import jobs !"); -552return importJobs(filename, FileType.valueOf(StringUtils.upperCase(fileType))); -553 } -554 -555/** -556 * Import the definitions of jobs, from the given file -557 * -558 * @param filename of the file containing the jobs definitions - mandatory -559 * @param fileType type of the file. See {@link FileType} - mandatory -560 * @return a {@link RundeckJobsImportResult} instance - won't be null -561 * @throws RundeckApiException in case of error when calling the API -562 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -563 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -564 * @throws IllegalArgumentException if the filename is blank (null, empty or whitespace), or the fileType is null -565 * @throws IOException if we failed to read the file -566 * @see #importJobs(InputStream, FileType) -567 * @see #importJobs(String, FileType, RundeckJobsImportMethod) -568 */ -569publicRundeckJobsImportResult importJobs(String filename, FileType fileType) throws RundeckApiException, -570 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -571return importJobs(filename, fileType, (RundeckJobsImportMethod) null); -572 } -573 -574/** -575 * Import the definitions of jobs, from the given file, using the given behavior -576 * -577 * @param filename of the file containing the jobs definitions - mandatory -578 * @param fileType type of the file. See {@link FileType} - mandatory -579 * @param importBehavior see {@link RundeckJobsImportMethod} -580 * @return a {@link RundeckJobsImportResult} instance - won't be null -581 * @throws RundeckApiException in case of error when calling the API -582 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -583 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -584 * @throws IllegalArgumentException if the filename or fileType is blank (null, empty or whitespace), or the -585 * fileType or behavior is not valid -586 * @throws IOException if we failed to read the file -587 * @see #importJobs(InputStream, String, String) -588 * @see #importJobs(String, FileType, RundeckJobsImportMethod) -589 */ -590publicRundeckJobsImportResult importJobs(String filename, String fileType, String importBehavior) -591throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, -592 IOException { -593 AssertUtil.notBlank(fileType, "fileType is mandatory to import jobs !"); -594return importJobs(filename, -595 FileType.valueOf(StringUtils.upperCase(fileType)), -596 RundeckJobsImportMethod.valueOf(StringUtils.upperCase(importBehavior))); -597 } -598 -599/** -600 * Import the definitions of jobs, from the given file, using the given behavior -601 * -602 * @param filename of the file containing the jobs definitions - mandatory -603 * @param fileType type of the file. See {@link FileType} - mandatory -604 * @param importBehavior see {@link RundeckJobsImportMethod} -605 * @return a {@link RundeckJobsImportResult} instance - won't be null -606 * @throws RundeckApiException in case of error when calling the API -607 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -608 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -609 * @throws IllegalArgumentException if the filename is blank (null, empty or whitespace), or the fileType is null -610 * @throws IOException if we failed to read the file -611 * @see #importJobs(InputStream, FileType, RundeckJobsImportMethod) -612 */ -613publicRundeckJobsImportResult importJobs(String filename, FileType fileType, RundeckJobsImportMethod importBehavior) -614throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, -615 IOException { -616 AssertUtil.notBlank(filename, "filename (of jobs file) is mandatory to import jobs !"); -617 FileInputStream stream = null; -618try { -619 stream = FileUtils.openInputStream(new File(filename)); -620return importJobs(stream, fileType, importBehavior); -621 } finally { -622 IOUtils.closeQuietly(stream); -623 } -624 } -625 -626/** -627 * Import the definitions of jobs, from the given input stream -628 * -629 * @param stream inputStream for reading the definitions - mandatory -630 * @param fileType type of the file. See {@link FileType} - mandatory -631 * @return a {@link RundeckJobsImportResult} instance - won't be null -632 * @throws RundeckApiException in case of error when calling the API -633 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -634 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -635 * @throws IllegalArgumentException if the stream is null, or the fileType is blank (null, empty or whitespace) or -636 * invalid -637 * @see #importJobs(String, String) -638 * @see #importJobs(InputStream, FileType, RundeckJobsImportMethod) -639 */ -640publicRundeckJobsImportResult importJobs(InputStream stream, String fileType) throws RundeckApiException, -641 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -642 AssertUtil.notBlank(fileType, "fileType is mandatory to import jobs !"); -643return importJobs(stream, FileType.valueOf(StringUtils.upperCase(fileType))); -644 } -645 -646/** -647 * Import the definitions of jobs, from the given input stream -648 * -649 * @param stream inputStream for reading the definitions - mandatory -650 * @param fileType type of the file. See {@link FileType} - mandatory -651 * @return a {@link RundeckJobsImportResult} instance - won't be null -652 * @throws RundeckApiException in case of error when calling the API -653 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -654 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -655 * @throws IllegalArgumentException if the stream or fileType is null -656 * @see #importJobs(String, FileType) -657 * @see #importJobs(InputStream, FileType, RundeckJobsImportMethod) -658 */ -659publicRundeckJobsImportResult importJobs(InputStream stream, FileType fileType) throws RundeckApiException, -660 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -661return importJobs(stream, fileType, (RundeckJobsImportMethod) null); -662 } -663 -664/** -665 * Import the definitions of jobs, from the given input stream, using the given behavior -666 * -667 * @param stream inputStream for reading the definitions - mandatory -668 * @param fileType type of the file. See {@link FileType} - mandatory -669 * @param importBehavior see {@link RundeckJobsImportMethod} -670 * @return a {@link RundeckJobsImportResult} instance - won't be null -671 * @throws RundeckApiException in case of error when calling the API -672 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -673 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -674 * @throws IllegalArgumentException if the stream is null, or the fileType is blank (null, empty or whitespace), or -675 * the fileType or behavior is not valid -676 * @see #importJobs(String, String, String) -677 * @see #importJobs(InputStream, FileType, RundeckJobsImportMethod) -678 */ -679publicRundeckJobsImportResult importJobs(InputStream stream, String fileType, String importBehavior) -680throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -681 AssertUtil.notBlank(fileType, "fileType is mandatory to import jobs !"); -682return importJobs(stream, -683 FileType.valueOf(StringUtils.upperCase(fileType)), -684 RundeckJobsImportMethod.valueOf(StringUtils.upperCase(importBehavior))); -685 } -686 -687/** -688 * Import the definitions of jobs, from the given input stream, using the given behavior -689 * -690 * @param stream inputStream for reading the definitions - mandatory -691 * @param fileType type of the file. See {@link FileType} - mandatory -692 * @param importBehavior see {@link RundeckJobsImportMethod} -693 * @return a {@link RundeckJobsImportResult} instance - won't be null -694 * @throws RundeckApiException in case of error when calling the API -695 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -696 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -697 * @throws IllegalArgumentException if the stream or fileType is null -698 * @see #importJobs(String, FileType, RundeckJobsImportMethod) -699 */ -700publicRundeckJobsImportResult importJobs(InputStream stream, FileType fileType, -701RundeckJobsImportMethod importBehavior) throws RundeckApiException, RundeckApiLoginException, -702 RundeckApiTokenException, IllegalArgumentException { -703 AssertUtil.notNull(stream, "inputStream of jobs is mandatory to import jobs !"); -704 AssertUtil.notNull(fileType, "fileType is mandatory to import jobs !"); -705returnnewApiCall(this).post(newApiPathBuilder("/jobs/import").param("format", fileType) -706 .param("dupeOption", importBehavior) -707 .attach("xmlBatch", stream), -708newJobsImportResultParser("result")); -709 } -710 -711/** -712 * Find a job, identified by its project, group and name. Note that the groupPath is optional, as a job does not -713 * need to belong to a group (either pass null, or an empty string). -714 * -715 * @param project name of the project - mandatory -716 * @param groupPath group to which the job belongs (if it belongs to a group) - optional -717 * @param name of the job to find - mandatory -718 * @return a {@link RundeckJob} instance - null if not found -719 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -720 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -721 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -722 * @throws IllegalArgumentException if the project or the name is blank (null, empty or whitespace) -723 * @see #getJob(String) -724 */ -725publicRundeckJob findJob(String project, String groupPath, String name) throws RundeckApiException, -726 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -727 AssertUtil.notBlank(project, "project is mandatory to find a job !"); -728 AssertUtil.notBlank(name, "job name is mandatory to find a job !"); -729 List<RundeckJob> jobs = getJobs(project, name, groupPath, new String[0]); -730return jobs.isEmpty() ? null : jobs.get(0); -731 } -732 -733/** -734 * Get the definition of a single job, identified by the given ID -735 * -736 * @param jobId identifier of the job - mandatory -737 * @return a {@link RundeckJob} instance - won't be null -738 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -739 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -740 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -741 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -742 * @see #findJob(String, String, String) -743 * @see #exportJob(String, String) -744 */ -745publicRundeckJob getJob(String jobId) throws RundeckApiException, RundeckApiLoginException, -746 RundeckApiTokenException, IllegalArgumentException { -747 AssertUtil.notBlank(jobId, "jobId is mandatory to get the details of a job !"); -748returnnewApiCall(this).get(newApiPathBuilder("/job/", jobId), newJobParser("joblist/job")); -749 } -750 -751/** -752 * Delete a single job, identified by the given ID -753 * -754 * @param jobId identifier of the job - mandatory -755 * @return the success message (note that in case of error, you'll get an exception) -756 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -757 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -758 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -759 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -760 */ -761public String deleteJob(String jobId) throws RundeckApiException, RundeckApiLoginException, -762 RundeckApiTokenException, IllegalArgumentException { -763 AssertUtil.notBlank(jobId, "jobId is mandatory to delete a job !"); -764returnnewApiCall(this).delete(newApiPathBuilder("/job/", jobId), newStringParser("result/success/message")); -765 } -766 -767/** -768 * Trigger the execution of a RunDeck job (identified by the given ID), and return immediately (without waiting the -769 * end of the job execution) -770 * -771 * @param jobId identifier of the job - mandatory -772 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -773 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -774 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -775 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -776 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -777 * @see #triggerJob(String, Properties, Properties) -778 * @see #runJob(String) -779 */ -780publicRundeckExecution triggerJob(String jobId) throws RundeckApiException, RundeckApiLoginException, -781 RundeckApiTokenException, IllegalArgumentException { -782return triggerJob(jobId, null); -783 } -784 -785/** -786 * Trigger the execution of a RunDeck job (identified by the given ID), and return immediately (without waiting the -787 * end of the job execution) -788 * -789 * @param jobId identifier of the job - mandatory -790 * @param options of the job - optional. See {@link OptionsBuilder}. -791 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -792 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -793 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -794 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -795 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -796 * @see #triggerJob(String, Properties, Properties) -797 * @see #runJob(String, Properties) -798 */ -799publicRundeckExecution triggerJob(String jobId, Properties options) throws RundeckApiException, -800 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -801return triggerJob(jobId, options, null); -802 } -803 -804/** -805 * Trigger the execution of a RunDeck job (identified by the given ID), and return immediately (without waiting the -806 * end of the job execution) -807 * -808 * @param jobId identifier of the job - mandatory -809 * @param options of the job - optional. See {@link OptionsBuilder}. -810 * @param nodeFilters for overriding the nodes on which the job will be executed - optional. See -811 * {@link NodeFiltersBuilder} -812 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -813 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -814 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -815 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -816 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -817 * @see #triggerJob(String) -818 * @see #runJob(String, Properties, Properties) -819 */ -820publicRundeckExecution triggerJob(String jobId, Properties options, Properties nodeFilters) -821throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -822 AssertUtil.notBlank(jobId, "jobId is mandatory to trigger a job !"); -823returnnewApiCall(this).get(newApiPathBuilder("/job/", jobId, "/run").param("argString", -824 ParametersUtil.generateArgString(options)) -825 .nodeFilters(nodeFilters), -826newExecutionParser("result/executions/execution")); -827 } -828 -829/** -830 * Run a RunDeck job (identified by the given ID), and wait until its execution is finished (or aborted) to return. -831 * We will poll the RunDeck server at regular interval (every 5 seconds) to know if the execution is finished (or -832 * aborted) or is still running. -833 * -834 * @param jobId identifier of the job - mandatory -835 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -836 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -837 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -838 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -839 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -840 * @see #triggerJob(String) -841 * @see #runJob(String, Properties, Properties, long, TimeUnit) -842 */ -843publicRundeckExecution runJob(String jobId) throws RundeckApiException, RundeckApiLoginException, -844 RundeckApiTokenException, IllegalArgumentException { -845return runJob(jobId, null); -846 } -847 -848/** -849 * Run a RunDeck job (identified by the given ID), and wait until its execution is finished (or aborted) to return. -850 * We will poll the RunDeck server at regular interval (every 5 seconds) to know if the execution is finished (or -851 * aborted) or is still running. -852 * -853 * @param jobId identifier of the job - mandatory -854 * @param options of the job - optional. See {@link OptionsBuilder}. -855 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -856 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -857 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -858 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -859 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -860 * @see #triggerJob(String, Properties) -861 * @see #runJob(String, Properties, Properties, long, TimeUnit) -862 */ -863publicRundeckExecution runJob(String jobId, Properties options) throws RundeckApiException, -864 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -865return runJob(jobId, options, null); -866 } -867 -868/** -869 * Run a RunDeck job (identified by the given ID), and wait until its execution is finished (or aborted) to return. -870 * We will poll the RunDeck server at regular interval (every 5 seconds) to know if the execution is finished (or -871 * aborted) or is still running. -872 * -873 * @param jobId identifier of the job - mandatory -874 * @param options of the job - optional. See {@link OptionsBuilder}. -875 * @param nodeFilters for overriding the nodes on which the job will be executed - optional. See -876 * {@link NodeFiltersBuilder} -877 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -878 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -879 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -880 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -881 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -882 * @see #triggerJob(String, Properties, Properties) -883 * @see #runJob(String, Properties, Properties, long, TimeUnit) -884 */ -885publicRundeckExecution runJob(String jobId, Properties options, Properties nodeFilters) -886throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -887return runJob(jobId, options, nodeFilters, DEFAULT_POOLING_INTERVAL, DEFAULT_POOLING_UNIT); -888 } -889 -890/** -891 * Run a RunDeck job (identified by the given ID), and wait until its execution is finished (or aborted) to return. -892 * We will poll the RunDeck server at regular interval (configured by the poolingInterval/poolingUnit couple) to -893 * know if the execution is finished (or aborted) or is still running. -894 * -895 * @param jobId identifier of the job - mandatory -896 * @param options of the job - optional. See {@link OptionsBuilder}. -897 * @param poolingInterval for checking the status of the execution. Must be > 0. -898 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -899 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -900 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -901 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -902 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -903 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -904 * @see #triggerJob(String, Properties) -905 * @see #runJob(String, Properties, Properties, long, TimeUnit) -906 */ -907publicRundeckExecution runJob(String jobId, Properties options, long poolingInterval, TimeUnit poolingUnit) -908throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -909return runJob(jobId, options, null, poolingInterval, poolingUnit); -910 } -911 -912/** -913 * Run a RunDeck job (identified by the given ID), and wait until its execution is finished (or aborted) to return. -914 * We will poll the RunDeck server at regular interval (configured by the poolingInterval/poolingUnit couple) to -915 * know if the execution is finished (or aborted) or is still running. -916 * -917 * @param jobId identifier of the job - mandatory -918 * @param options of the job - optional. See {@link OptionsBuilder}. -919 * @param nodeFilters for overriding the nodes on which the job will be executed - optional. See -920 * {@link NodeFiltersBuilder} -921 * @param poolingInterval for checking the status of the execution. Must be > 0. -922 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -923 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -924 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -925 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -926 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -927 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -928 * @see #triggerJob(String, Properties) -929 * @see #runJob(String, Properties, Properties, long, TimeUnit) -930 */ -931publicRundeckExecution runJob(String jobId, Properties options, Properties nodeFilters, long poolingInterval, -932 TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, -933 IllegalArgumentException { -934if (poolingInterval <= 0) { -935 poolingInterval = DEFAULT_POOLING_INTERVAL; -936 poolingUnit = DEFAULT_POOLING_UNIT; -937 } -938if (poolingUnit == null) { -939 poolingUnit = DEFAULT_POOLING_UNIT; -940 } -941 -942RundeckExecution execution = triggerJob(jobId, options, nodeFilters); -943while (ExecutionStatus.RUNNING.equals(execution.getStatus())) { -944try { -945 Thread.sleep(poolingUnit.toMillis(poolingInterval)); -946 } catch (InterruptedException e) { -947break; -948 } -949 execution = getExecution(execution.getId()); +163 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +164 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +165 */ +166publicvoid testAuth() throws RundeckApiLoginException, RundeckApiTokenException { +167newApiCall(this).testAuth(); +168 } +169 +170/** +171 * @deprecated Use {@link #testAuth()} +172 * @see #testAuth() +173 */ +174 @Deprecated +175publicvoid testCredentials() throws RundeckApiLoginException, RundeckApiTokenException { +176 testAuth(); +177 } +178 +179/* +180 * Projects +181 */ +182 +183/** +184 * List all projects +185 * +186 * @return a {@link List} of {@link RundeckProject} : might be empty, but won't be null +187 * @throws RundeckApiException in case of error when calling the API +188 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +189 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +190 */ +191public List<RundeckProject> getProjects() throws RundeckApiException, RundeckApiLoginException, +192RundeckApiTokenException { +193returnnewApiCall(this).get(newApiPathBuilder("/projects"), +194new ListParser<RundeckProject>(newProjectParser(), "result/projects/project")); +195 } +196 +197/** +198 * Get the definition of a single project, identified by the given name +199 * +200 * @param projectName name of the project - mandatory +201 * @return a {@link RundeckProject} instance - won't be null +202 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +203 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +204 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +205 * @throws IllegalArgumentException if the projectName is blank (null, empty or whitespace) +206 */ +207publicRundeckProject getProject(String projectName) throws RundeckApiException, RundeckApiLoginException, +208 RundeckApiTokenException, IllegalArgumentException { +209 AssertUtil.notBlank(projectName, "projectName is mandatory to get the details of a project !"); +210returnnewApiCall(this).get(newApiPathBuilder("/project/", projectName), +211newProjectParser("result/projects/project")); +212 } +213 +214/* +215 * Jobs +216 */ +217 +218/** +219 * List all jobs (for all projects) +220 * +221 * @return a {@link List} of {@link RundeckJob} : might be empty, but won't be null +222 * @throws RundeckApiException in case of error when calling the API +223 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +224 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +225 */ +226public List<RundeckJob> getJobs() throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException { +227 List<RundeckJob> jobs = new ArrayList<RundeckJob>(); +228for (RundeckProject project : getProjects()) { +229 jobs.addAll(getJobs(project.getName())); +230 } +231return jobs; +232 } +233 +234/** +235 * List all jobs that belongs to the given project +236 * +237 * @param project name of the project - mandatory +238 * @return a {@link List} of {@link RundeckJob} : might be empty, but won't be null +239 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +240 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +241 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +242 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +243 * @see #getJobs(String, String, String, String...) +244 */ +245public List<RundeckJob> getJobs(String project) throws RundeckApiException, RundeckApiLoginException, +246 RundeckApiTokenException, IllegalArgumentException { +247return getJobs(project, null, null, new String[0]); +248 } +249 +250/** +251 * List the jobs that belongs to the given project, and matches the given criteria (jobFilter, groupPath and jobIds) +252 * +253 * @param project name of the project - mandatory +254 * @param jobFilter a filter for the job Name - optional +255 * @param groupPath a group or partial group path to include all jobs within that group path - optional +256 * @param jobIds a list of Job IDs to include - optional +257 * @return a {@link List} of {@link RundeckJob} : might be empty, but won't be null +258 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +259 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +260 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +261 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +262 * @see #getJobs(String) +263 */ +264public List<RundeckJob> getJobs(String project, String jobFilter, String groupPath, String... jobIds) +265throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +266 AssertUtil.notBlank(project, "project is mandatory to get all jobs !"); +267returnnewApiCall(this).get(newApiPathBuilder("/jobs").param("project", project) +268 .param("jobFilter", jobFilter) +269 .param("groupPath", groupPath) +270 .param("idlist", StringUtils.join(jobIds, ",")), +271new ListParser<RundeckJob>(newJobParser(), "result/jobs/job")); +272 } +273 +274/** +275 * Export the definitions of all jobs that belongs to the given project +276 * +277 * @param filename path of the file where the content should be saved - mandatory +278 * @param format of the export. See {@link FileType} - mandatory +279 * @param project name of the project - mandatory +280 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +281 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +282 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +283 * @throws IllegalArgumentException if the format or project is blank (null, empty or whitespace), or the format is +284 * invalid +285 * @throws IOException if we failed to write to the file +286 * @see #exportJobsToFile(String, FileType, String, String, String, String...) +287 * @see #exportJobs(String, String) +288 */ +289publicvoid exportJobsToFile(String filename, String format, String project) throws RundeckApiException, +290 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +291 AssertUtil.notBlank(format, "format is mandatory to export jobs !"); +292 exportJobsToFile(filename, FileType.valueOf(StringUtils.upperCase(format)), project); +293 } +294 +295/** +296 * Export the definitions of all jobs that belongs to the given project +297 * +298 * @param filename path of the file where the content should be saved - mandatory +299 * @param format of the export. See {@link FileType} - mandatory +300 * @param project name of the project - mandatory +301 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +302 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +303 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +304 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the format is null +305 * @throws IOException if we failed to write to the file +306 * @see #exportJobsToFile(String, FileType, String, String, String, String...) +307 * @see #exportJobs(FileType, String) +308 */ +309publicvoid exportJobsToFile(String filename, FileType format, String project) throws RundeckApiException, +310 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +311 exportJobsToFile(filename, format, project, null, null, new String[0]); +312 } +313 +314/** +315 * Export the definitions of the jobs that belongs to the given project, and matches the given criteria (jobFilter, +316 * groupPath and jobIds) +317 * +318 * @param filename path of the file where the content should be saved - mandatory +319 * @param format of the export. See {@link FileType} - mandatory +320 * @param project name of the project - mandatory +321 * @param jobFilter a filter for the job Name - optional +322 * @param groupPath a group or partial group path to include all jobs within that group path - optional +323 * @param jobIds a list of Job IDs to include - optional +324 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +325 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +326 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +327 * @throws IllegalArgumentException if the filename, format or project is blank (null, empty or whitespace), or the +328 * format is invalid +329 * @throws IOException if we failed to write to the file +330 * @see #exportJobsToFile(String, FileType, String, String, String, String...) +331 * @see #exportJobs(FileType, String, String, String, String...) +332 */ +333publicvoid exportJobsToFile(String filename, String format, String project, String jobFilter, String groupPath, +334 String... jobIds) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, +335 IllegalArgumentException, IOException { +336 AssertUtil.notBlank(format, "format is mandatory to export jobs !"); +337 exportJobsToFile(filename, +338 FileType.valueOf(StringUtils.upperCase(format)), +339 project, +340 jobFilter, +341 groupPath, +342 jobIds); +343 } +344 +345/** +346 * Export the definitions of the jobs that belongs to the given project, and matches the given criteria (jobFilter, +347 * groupPath and jobIds) +348 * +349 * @param filename path of the file where the content should be saved - mandatory +350 * @param format of the export. See {@link FileType} - mandatory +351 * @param project name of the project - mandatory +352 * @param jobFilter a filter for the job Name - optional +353 * @param groupPath a group or partial group path to include all jobs within that group path - optional +354 * @param jobIds a list of Job IDs to include - optional +355 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +356 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +357 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +358 * @throws IllegalArgumentException if the filename or project is blank (null, empty or whitespace), or the format +359 * is null +360 * @throws IOException if we failed to write to the file +361 * @see #exportJobs(FileType, String, String, String, String...) +362 */ +363publicvoid exportJobsToFile(String filename, FileType format, String project, String jobFilter, String groupPath, +364 String... jobIds) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, +365 IllegalArgumentException, IOException { +366 AssertUtil.notBlank(filename, "filename is mandatory to export a job !"); +367 InputStream inputStream = exportJobs(format, project, jobFilter, groupPath, jobIds); +368 FileUtils.writeByteArrayToFile(new File(filename), IOUtils.toByteArray(inputStream)); +369 } +370 +371/** +372 * Export the definitions of all jobs that belongs to the given project +373 * +374 * @param format of the export. See {@link FileType} - mandatory +375 * @param project name of the project - mandatory +376 * @return an {@link InputStream} instance, not linked to any network resources - won't be null +377 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +378 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +379 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +380 * @throws IllegalArgumentException if the format or project is blank (null, empty or whitespace), or the format is +381 * invalid +382 * @see #exportJobs(FileType, String, String, String, String...) +383 * @see #exportJobsToFile(String, String, String) +384 */ +385public InputStream exportJobs(String format, String project) throws RundeckApiException, RundeckApiLoginException, +386 RundeckApiTokenException, IllegalArgumentException { +387 AssertUtil.notBlank(format, "format is mandatory to export jobs !"); +388return exportJobs(FileType.valueOf(StringUtils.upperCase(format)), project); +389 } +390 +391/** +392 * Export the definitions of all jobs that belongs to the given project +393 * +394 * @param format of the export. See {@link FileType} - mandatory +395 * @param project name of the project - mandatory +396 * @return an {@link InputStream} instance, not linked to any network resources - won't be null +397 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +398 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +399 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +400 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the format is null +401 * @see #exportJobs(FileType, String, String, String, String...) +402 * @see #exportJobsToFile(String, FileType, String) +403 */ +404public InputStream exportJobs(FileType format, String project) throws RundeckApiException, +405 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +406return exportJobs(format, project, null, null, new String[0]); +407 } +408 +409/** +410 * Export the definitions of the jobs that belongs to the given project, and matches the given criteria (jobFilter, +411 * groupPath and jobIds) +412 * +413 * @param format of the export. See {@link FileType} - mandatory +414 * @param project name of the project - mandatory +415 * @param jobFilter a filter for the job Name - optional +416 * @param groupPath a group or partial group path to include all jobs within that group path - optional +417 * @param jobIds a list of Job IDs to include - optional +418 * @return an {@link InputStream} instance, not linked to any network resources - won't be null +419 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +420 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +421 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +422 * @throws IllegalArgumentException if the format or project is blank (null, empty or whitespace), or the format is +423 * invalid +424 * @see #exportJobs(FileType, String, String, String, String...) +425 * @see #exportJobsToFile(String, String, String, String, String, String...) +426 */ +427public InputStream exportJobs(String format, String project, String jobFilter, String groupPath, String... jobIds) +428throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +429 AssertUtil.notBlank(format, "format is mandatory to export jobs !"); +430return exportJobs(FileType.valueOf(StringUtils.upperCase(format)), project, jobFilter, groupPath, jobIds); +431 } +432 +433/** +434 * Export the definitions of the jobs that belongs to the given project, and matches the given criteria (jobFilter, +435 * groupPath and jobIds) +436 * +437 * @param format of the export. See {@link FileType} - mandatory +438 * @param project name of the project - mandatory +439 * @param jobFilter a filter for the job Name - optional +440 * @param groupPath a group or partial group path to include all jobs within that group path - optional +441 * @param jobIds a list of Job IDs to include - optional +442 * @return an {@link InputStream} instance, not linked to any network resources - won't be null +443 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +444 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +445 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +446 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the format is null +447 * @see #exportJobsToFile(String, FileType, String, String, String, String...) +448 */ +449public InputStream exportJobs(FileType format, String project, String jobFilter, String groupPath, String... jobIds) +450throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +451 AssertUtil.notNull(format, "format is mandatory to export jobs !"); +452 AssertUtil.notBlank(project, "project is mandatory to export jobs !"); +453returnnewApiCall(this).get(newApiPathBuilder("/jobs/export").param("format", format) +454 .param("project", project) +455 .param("jobFilter", jobFilter) +456 .param("groupPath", groupPath) +457 .param("idlist", StringUtils.join(jobIds, ","))); +458 } +459 +460/** +461 * Export the definition of a single job (identified by the given ID) +462 * +463 * @param filename path of the file where the content should be saved - mandatory +464 * @param format of the export. See {@link FileType} - mandatory +465 * @param jobId identifier of the job - mandatory +466 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +467 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +468 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +469 * @throws IllegalArgumentException if the filename, format or jobId is blank (null, empty or whitespace), or the +470 * format is invalid +471 * @throws IOException if we failed to write to the file +472 * @see #exportJobToFile(String, FileType, String) +473 * @see #exportJob(String, String) +474 * @see #getJob(String) +475 */ +476publicvoid exportJobToFile(String filename, String format, String jobId) throws RundeckApiException, +477 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +478 AssertUtil.notBlank(format, "format is mandatory to export a job !"); +479 exportJobToFile(filename, FileType.valueOf(StringUtils.upperCase(format)), jobId); +480 } +481 +482/** +483 * Export the definition of a single job (identified by the given ID) +484 * +485 * @param filename path of the file where the content should be saved - mandatory +486 * @param format of the export. See {@link FileType} - mandatory +487 * @param jobId identifier of the job - mandatory +488 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +489 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +490 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +491 * @throws IllegalArgumentException if the filename or jobId is blank (null, empty or whitespace), or the format is +492 * null +493 * @throws IOException if we failed to write to the file +494 * @see #exportJob(FileType, String) +495 * @see #getJob(String) +496 */ +497publicvoid exportJobToFile(String filename, FileType format, String jobId) throws RundeckApiException, +498 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +499 AssertUtil.notBlank(filename, "filename is mandatory to export a job !"); +500 InputStream inputStream = exportJob(format, jobId); +501 FileUtils.writeByteArrayToFile(new File(filename), IOUtils.toByteArray(inputStream)); +502 } +503 +504/** +505 * Export the definition of a single job, identified by the given ID +506 * +507 * @param format of the export. See {@link FileType} - mandatory +508 * @param jobId identifier of the job - mandatory +509 * @return an {@link InputStream} instance, not linked to any network resources - won't be null +510 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +511 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +512 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +513 * @throws IllegalArgumentException if the format or jobId is blank (null, empty or whitespace), or the format is +514 * invalid +515 * @see #exportJobToFile(String, String, String) +516 * @see #getJob(String) +517 */ +518public InputStream exportJob(String format, String jobId) throws RundeckApiException, RundeckApiLoginException, +519 RundeckApiTokenException, IllegalArgumentException { +520 AssertUtil.notBlank(format, "format is mandatory to export a job !"); +521return exportJob(FileType.valueOf(StringUtils.upperCase(format)), jobId); +522 } +523 +524/** +525 * Export the definition of a single job, identified by the given ID +526 * +527 * @param format of the export. See {@link FileType} - mandatory +528 * @param jobId identifier of the job - mandatory +529 * @return an {@link InputStream} instance, not linked to any network resources - won't be null +530 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +531 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +532 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +533 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace), or the format is null +534 * @see #exportJobToFile(String, FileType, String) +535 * @see #getJob(String) +536 */ +537public InputStream exportJob(FileType format, String jobId) throws RundeckApiException, RundeckApiLoginException, +538 RundeckApiTokenException, IllegalArgumentException { +539 AssertUtil.notNull(format, "format is mandatory to export a job !"); +540 AssertUtil.notBlank(jobId, "jobId is mandatory to export a job !"); +541returnnewApiCall(this).get(newApiPathBuilder("/job/", jobId).param("format", format)); +542 } +543 +544/** +545 * Import the definitions of jobs, from the given file +546 * +547 * @param filename of the file containing the jobs definitions - mandatory +548 * @param fileType type of the file. See {@link FileType} - mandatory +549 * @return a {@link RundeckJobsImportResult} instance - won't be null +550 * @throws RundeckApiException in case of error when calling the API +551 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +552 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +553 * @throws IllegalArgumentException if the filename or fileType is blank (null, empty or whitespace), or the +554 * fileType is invalid +555 * @throws IOException if we failed to read the file +556 * @see #importJobs(InputStream, String) +557 * @see #importJobs(String, FileType, RundeckJobsImportMethod) +558 */ +559publicRundeckJobsImportResult importJobs(String filename, String fileType) throws RundeckApiException, +560 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +561 AssertUtil.notBlank(fileType, "fileType is mandatory to import jobs !"); +562return importJobs(filename, FileType.valueOf(StringUtils.upperCase(fileType))); +563 } +564 +565/** +566 * Import the definitions of jobs, from the given file +567 * +568 * @param filename of the file containing the jobs definitions - mandatory +569 * @param fileType type of the file. See {@link FileType} - mandatory +570 * @return a {@link RundeckJobsImportResult} instance - won't be null +571 * @throws RundeckApiException in case of error when calling the API +572 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +573 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +574 * @throws IllegalArgumentException if the filename is blank (null, empty or whitespace), or the fileType is null +575 * @throws IOException if we failed to read the file +576 * @see #importJobs(InputStream, FileType) +577 * @see #importJobs(String, FileType, RundeckJobsImportMethod) +578 */ +579publicRundeckJobsImportResult importJobs(String filename, FileType fileType) throws RundeckApiException, +580 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +581return importJobs(filename, fileType, (RundeckJobsImportMethod) null); +582 } +583 +584/** +585 * Import the definitions of jobs, from the given file, using the given behavior +586 * +587 * @param filename of the file containing the jobs definitions - mandatory +588 * @param fileType type of the file. See {@link FileType} - mandatory +589 * @param importBehavior see {@link RundeckJobsImportMethod} +590 * @return a {@link RundeckJobsImportResult} instance - won't be null +591 * @throws RundeckApiException in case of error when calling the API +592 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +593 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +594 * @throws IllegalArgumentException if the filename or fileType is blank (null, empty or whitespace), or the +595 * fileType or behavior is not valid +596 * @throws IOException if we failed to read the file +597 * @see #importJobs(InputStream, String, String) +598 * @see #importJobs(String, FileType, RundeckJobsImportMethod) +599 */ +600publicRundeckJobsImportResult importJobs(String filename, String fileType, String importBehavior) +601throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, +602 IOException { +603 AssertUtil.notBlank(fileType, "fileType is mandatory to import jobs !"); +604return importJobs(filename, +605 FileType.valueOf(StringUtils.upperCase(fileType)), +606 RundeckJobsImportMethod.valueOf(StringUtils.upperCase(importBehavior))); +607 } +608 +609/** +610 * Import the definitions of jobs, from the given file, using the given behavior +611 * +612 * @param filename of the file containing the jobs definitions - mandatory +613 * @param fileType type of the file. See {@link FileType} - mandatory +614 * @param importBehavior see {@link RundeckJobsImportMethod} +615 * @return a {@link RundeckJobsImportResult} instance - won't be null +616 * @throws RundeckApiException in case of error when calling the API +617 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +618 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +619 * @throws IllegalArgumentException if the filename is blank (null, empty or whitespace), or the fileType is null +620 * @throws IOException if we failed to read the file +621 * @see #importJobs(InputStream, FileType, RundeckJobsImportMethod) +622 */ +623publicRundeckJobsImportResult importJobs(String filename, FileType fileType, RundeckJobsImportMethod importBehavior) +624throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, +625 IOException { +626 AssertUtil.notBlank(filename, "filename (of jobs file) is mandatory to import jobs !"); +627 FileInputStream stream = null; +628try { +629 stream = FileUtils.openInputStream(new File(filename)); +630return importJobs(stream, fileType, importBehavior); +631 } finally { +632 IOUtils.closeQuietly(stream); +633 } +634 } +635 +636/** +637 * Import the definitions of jobs, from the given input stream +638 * +639 * @param stream inputStream for reading the definitions - mandatory +640 * @param fileType type of the file. See {@link FileType} - mandatory +641 * @return a {@link RundeckJobsImportResult} instance - won't be null +642 * @throws RundeckApiException in case of error when calling the API +643 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +644 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +645 * @throws IllegalArgumentException if the stream is null, or the fileType is blank (null, empty or whitespace) or +646 * invalid +647 * @see #importJobs(String, String) +648 * @see #importJobs(InputStream, FileType, RundeckJobsImportMethod) +649 */ +650publicRundeckJobsImportResult importJobs(InputStream stream, String fileType) throws RundeckApiException, +651 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +652 AssertUtil.notBlank(fileType, "fileType is mandatory to import jobs !"); +653return importJobs(stream, FileType.valueOf(StringUtils.upperCase(fileType))); +654 } +655 +656/** +657 * Import the definitions of jobs, from the given input stream +658 * +659 * @param stream inputStream for reading the definitions - mandatory +660 * @param fileType type of the file. See {@link FileType} - mandatory +661 * @return a {@link RundeckJobsImportResult} instance - won't be null +662 * @throws RundeckApiException in case of error when calling the API +663 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +664 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +665 * @throws IllegalArgumentException if the stream or fileType is null +666 * @see #importJobs(String, FileType) +667 * @see #importJobs(InputStream, FileType, RundeckJobsImportMethod) +668 */ +669publicRundeckJobsImportResult importJobs(InputStream stream, FileType fileType) throws RundeckApiException, +670 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +671return importJobs(stream, fileType, (RundeckJobsImportMethod) null); +672 } +673 +674/** +675 * Import the definitions of jobs, from the given input stream, using the given behavior +676 * +677 * @param stream inputStream for reading the definitions - mandatory +678 * @param fileType type of the file. See {@link FileType} - mandatory +679 * @param importBehavior see {@link RundeckJobsImportMethod} +680 * @return a {@link RundeckJobsImportResult} instance - won't be null +681 * @throws RundeckApiException in case of error when calling the API +682 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +683 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +684 * @throws IllegalArgumentException if the stream is null, or the fileType is blank (null, empty or whitespace), or +685 * the fileType or behavior is not valid +686 * @see #importJobs(String, String, String) +687 * @see #importJobs(InputStream, FileType, RundeckJobsImportMethod) +688 */ +689publicRundeckJobsImportResult importJobs(InputStream stream, String fileType, String importBehavior) +690throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +691 AssertUtil.notBlank(fileType, "fileType is mandatory to import jobs !"); +692return importJobs(stream, +693 FileType.valueOf(StringUtils.upperCase(fileType)), +694 RundeckJobsImportMethod.valueOf(StringUtils.upperCase(importBehavior))); +695 } +696 +697/** +698 * Import the definitions of jobs, from the given input stream, using the given behavior +699 * +700 * @param stream inputStream for reading the definitions - mandatory +701 * @param fileType type of the file. See {@link FileType} - mandatory +702 * @param importBehavior see {@link RundeckJobsImportMethod} +703 * @return a {@link RundeckJobsImportResult} instance - won't be null +704 * @throws RundeckApiException in case of error when calling the API +705 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +706 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +707 * @throws IllegalArgumentException if the stream or fileType is null +708 * @see #importJobs(String, FileType, RundeckJobsImportMethod) +709 */ +710publicRundeckJobsImportResult importJobs(InputStream stream, FileType fileType, +711RundeckJobsImportMethod importBehavior) throws RundeckApiException, RundeckApiLoginException, +712 RundeckApiTokenException, IllegalArgumentException { +713 AssertUtil.notNull(stream, "inputStream of jobs is mandatory to import jobs !"); +714 AssertUtil.notNull(fileType, "fileType is mandatory to import jobs !"); +715returnnewApiCall(this).post(newApiPathBuilder("/jobs/import").param("format", fileType) +716 .param("dupeOption", importBehavior) +717 .attach("xmlBatch", stream), +718newJobsImportResultParser("result")); +719 } +720 +721/** +722 * Find a job, identified by its project, group and name. Note that the groupPath is optional, as a job does not +723 * need to belong to a group (either pass null, or an empty string). +724 * +725 * @param project name of the project - mandatory +726 * @param groupPath group to which the job belongs (if it belongs to a group) - optional +727 * @param name of the job to find - mandatory +728 * @return a {@link RundeckJob} instance - null if not found +729 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +730 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +731 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +732 * @throws IllegalArgumentException if the project or the name is blank (null, empty or whitespace) +733 * @see #getJob(String) +734 */ +735publicRundeckJob findJob(String project, String groupPath, String name) throws RundeckApiException, +736 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +737 AssertUtil.notBlank(project, "project is mandatory to find a job !"); +738 AssertUtil.notBlank(name, "job name is mandatory to find a job !"); +739 List<RundeckJob> jobs = getJobs(project, name, groupPath, new String[0]); +740return jobs.isEmpty() ? null : jobs.get(0); +741 } +742 +743/** +744 * Get the definition of a single job, identified by the given ID +745 * +746 * @param jobId identifier of the job - mandatory +747 * @return a {@link RundeckJob} instance - won't be null +748 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +749 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +750 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +751 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +752 * @see #findJob(String, String, String) +753 * @see #exportJob(String, String) +754 */ +755publicRundeckJob getJob(String jobId) throws RundeckApiException, RundeckApiLoginException, +756 RundeckApiTokenException, IllegalArgumentException { +757 AssertUtil.notBlank(jobId, "jobId is mandatory to get the details of a job !"); +758returnnewApiCall(this).get(newApiPathBuilder("/job/", jobId), newJobParser("joblist/job")); +759 } +760 +761/** +762 * Delete a single job, identified by the given ID +763 * +764 * @param jobId identifier of the job - mandatory +765 * @return the success message (note that in case of error, you'll get an exception) +766 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +767 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +768 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +769 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +770 */ +771public String deleteJob(String jobId) throws RundeckApiException, RundeckApiLoginException, +772 RundeckApiTokenException, IllegalArgumentException { +773 AssertUtil.notBlank(jobId, "jobId is mandatory to delete a job !"); +774returnnewApiCall(this).delete(newApiPathBuilder("/job/", jobId), newStringParser("result/success/message")); +775 } +776 +777/** +778 * Trigger the execution of a RunDeck job (identified by the given ID), and return immediately (without waiting the +779 * end of the job execution) +780 * +781 * @param jobId identifier of the job - mandatory +782 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +783 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +784 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +785 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +786 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +787 * @see #triggerJob(String, Properties, Properties) +788 * @see #runJob(String) +789 */ +790publicRundeckExecution triggerJob(String jobId) throws RundeckApiException, RundeckApiLoginException, +791 RundeckApiTokenException, IllegalArgumentException { +792return triggerJob(jobId, null); +793 } +794 +795/** +796 * Trigger the execution of a RunDeck job (identified by the given ID), and return immediately (without waiting the +797 * end of the job execution) +798 * +799 * @param jobId identifier of the job - mandatory +800 * @param options of the job - optional. See {@link OptionsBuilder}. +801 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +802 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +803 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +804 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +805 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +806 * @see #triggerJob(String, Properties, Properties) +807 * @see #runJob(String, Properties) +808 */ +809publicRundeckExecution triggerJob(String jobId, Properties options) throws RundeckApiException, +810 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +811return triggerJob(jobId, options, null); +812 } +813 +814/** +815 * Trigger the execution of a RunDeck job (identified by the given ID), and return immediately (without waiting the +816 * end of the job execution) +817 * +818 * @param jobId identifier of the job - mandatory +819 * @param options of the job - optional. See {@link OptionsBuilder}. +820 * @param nodeFilters for overriding the nodes on which the job will be executed - optional. See +821 * {@link NodeFiltersBuilder} +822 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +823 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +824 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +825 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +826 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +827 * @see #triggerJob(String) +828 * @see #runJob(String, Properties, Properties) +829 */ +830publicRundeckExecution triggerJob(String jobId, Properties options, Properties nodeFilters) +831throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +832 AssertUtil.notBlank(jobId, "jobId is mandatory to trigger a job !"); +833returnnewApiCall(this).get(newApiPathBuilder("/job/", jobId, "/run").param("argString", +834 ParametersUtil.generateArgString(options)) +835 .nodeFilters(nodeFilters), +836newExecutionParser("result/executions/execution")); +837 } +838 +839/** +840 * Run a RunDeck job (identified by the given ID), and wait until its execution is finished (or aborted) to return. +841 * We will poll the RunDeck server at regular interval (every 5 seconds) to know if the execution is finished (or +842 * aborted) or is still running. +843 * +844 * @param jobId identifier of the job - mandatory +845 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +846 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +847 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +848 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +849 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +850 * @see #triggerJob(String) +851 * @see #runJob(String, Properties, Properties, long, TimeUnit) +852 */ +853publicRundeckExecution runJob(String jobId) throws RundeckApiException, RundeckApiLoginException, +854 RundeckApiTokenException, IllegalArgumentException { +855return runJob(jobId, null); +856 } +857 +858/** +859 * Run a RunDeck job (identified by the given ID), and wait until its execution is finished (or aborted) to return. +860 * We will poll the RunDeck server at regular interval (every 5 seconds) to know if the execution is finished (or +861 * aborted) or is still running. +862 * +863 * @param jobId identifier of the job - mandatory +864 * @param options of the job - optional. See {@link OptionsBuilder}. +865 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +866 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +867 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +868 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +869 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +870 * @see #triggerJob(String, Properties) +871 * @see #runJob(String, Properties, Properties, long, TimeUnit) +872 */ +873publicRundeckExecution runJob(String jobId, Properties options) throws RundeckApiException, +874 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +875return runJob(jobId, options, null); +876 } +877 +878/** +879 * Run a RunDeck job (identified by the given ID), and wait until its execution is finished (or aborted) to return. +880 * We will poll the RunDeck server at regular interval (every 5 seconds) to know if the execution is finished (or +881 * aborted) or is still running. +882 * +883 * @param jobId identifier of the job - mandatory +884 * @param options of the job - optional. See {@link OptionsBuilder}. +885 * @param nodeFilters for overriding the nodes on which the job will be executed - optional. See +886 * {@link NodeFiltersBuilder} +887 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +888 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +889 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +890 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +891 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +892 * @see #triggerJob(String, Properties, Properties) +893 * @see #runJob(String, Properties, Properties, long, TimeUnit) +894 */ +895publicRundeckExecution runJob(String jobId, Properties options, Properties nodeFilters) +896throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +897return runJob(jobId, options, nodeFilters, DEFAULT_POOLING_INTERVAL, DEFAULT_POOLING_UNIT); +898 } +899 +900/** +901 * Run a RunDeck job (identified by the given ID), and wait until its execution is finished (or aborted) to return. +902 * We will poll the RunDeck server at regular interval (configured by the poolingInterval/poolingUnit couple) to +903 * know if the execution is finished (or aborted) or is still running. +904 * +905 * @param jobId identifier of the job - mandatory +906 * @param options of the job - optional. See {@link OptionsBuilder}. +907 * @param poolingInterval for checking the status of the execution. Must be > 0. +908 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +909 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +910 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +911 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +912 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +913 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +914 * @see #triggerJob(String, Properties) +915 * @see #runJob(String, Properties, Properties, long, TimeUnit) +916 */ +917publicRundeckExecution runJob(String jobId, Properties options, long poolingInterval, TimeUnit poolingUnit) +918throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +919return runJob(jobId, options, null, poolingInterval, poolingUnit); +920 } +921 +922/** +923 * Run a RunDeck job (identified by the given ID), and wait until its execution is finished (or aborted) to return. +924 * We will poll the RunDeck server at regular interval (configured by the poolingInterval/poolingUnit couple) to +925 * know if the execution is finished (or aborted) or is still running. +926 * +927 * @param jobId identifier of the job - mandatory +928 * @param options of the job - optional. See {@link OptionsBuilder}. +929 * @param nodeFilters for overriding the nodes on which the job will be executed - optional. See +930 * {@link NodeFiltersBuilder} +931 * @param poolingInterval for checking the status of the execution. Must be > 0. +932 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +933 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +934 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +935 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +936 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +937 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +938 * @see #triggerJob(String, Properties) +939 * @see #runJob(String, Properties, Properties, long, TimeUnit) +940 */ +941publicRundeckExecution runJob(String jobId, Properties options, Properties nodeFilters, long poolingInterval, +942 TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, +943 IllegalArgumentException { +944if (poolingInterval <= 0) { +945 poolingInterval = DEFAULT_POOLING_INTERVAL; +946 poolingUnit = DEFAULT_POOLING_UNIT; +947 } +948if (poolingUnit == null) { +949 poolingUnit = DEFAULT_POOLING_UNIT; 950 } -951return execution; -952 } -953 -954/* -955 * Ad-hoc commands -956 */ -957 -958/** -959 * Trigger the execution of an ad-hoc command, and return immediately (without waiting the end of the execution). -960 * The command will not be dispatched to nodes, but be executed on the RunDeck server. -961 * -962 * @param project name of the project - mandatory -963 * @param command to be executed - mandatory -964 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -965 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -966 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -967 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -968 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) -969 * @see #triggerAdhocCommand(String, String, Properties, Integer, Boolean) -970 * @see #runAdhocCommand(String, String) -971 */ -972publicRundeckExecution triggerAdhocCommand(String project, String command) throws RundeckApiException, -973 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -974return triggerAdhocCommand(project, command, null); -975 } -976 -977/** -978 * Trigger the execution of an ad-hoc command, and return immediately (without waiting the end of the execution). -979 * The command will be dispatched to nodes, accordingly to the nodeFilters parameter. -980 * -981 * @param project name of the project - mandatory -982 * @param command to be executed - mandatory -983 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} -984 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -985 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -986 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -987 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -988 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) -989 * @see #triggerAdhocCommand(String, String, Properties, Integer, Boolean) -990 * @see #runAdhocCommand(String, String, Properties) -991 */ -992publicRundeckExecution triggerAdhocCommand(String project, String command, Properties nodeFilters) -993throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -994return triggerAdhocCommand(project, command, nodeFilters, null, null); -995 } -996 -997/** -998 * Trigger the execution of an ad-hoc command, and return immediately (without waiting the end of the execution). -999 * The command will be dispatched to nodes, accordingly to the nodeFilters parameter. -1000 * -1001 * @param project name of the project - mandatory -1002 * @param command to be executed - mandatory -1003 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} -1004 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional -1005 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional -1006 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -1007 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1008 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1009 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1010 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) -1011 * @see #triggerAdhocCommand(String, String) -1012 * @see #runAdhocCommand(String, String, Properties) -1013 */ -1014publicRundeckExecution triggerAdhocCommand(String project, String command, Properties nodeFilters, -1015 Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, RundeckApiLoginException, -1016 RundeckApiTokenException, IllegalArgumentException { -1017 AssertUtil.notBlank(project, "project is mandatory to trigger an ad-hoc command !"); -1018 AssertUtil.notBlank(command, "command is mandatory to trigger an ad-hoc command !"); -1019RundeckExecution execution = newApiCall(this).get(newApiPathBuilder("/run/command").param("project", project) -1020 .param("exec", command) -1021 .param("nodeThreadcount", -1022 nodeThreadcount) -1023 .param("nodeKeepgoing", -1024 nodeKeepgoing) -1025 .nodeFilters(nodeFilters), -1026newExecutionParser("result/execution")); -1027// the first call just returns the ID of the execution, so we need another call to get a "real" execution -1028return getExecution(execution.getId()); -1029 } -1030 -1031/** -1032 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1033 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still -1034 * running. The command will not be dispatched to nodes, but be executed on the RunDeck server. -1035 * -1036 * @param project name of the project - mandatory -1037 * @param command to be executed - mandatory -1038 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1039 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1040 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1041 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1042 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) -1043 * @see #runAdhocCommand(String, String, Properties, Integer, Boolean, long, TimeUnit) -1044 * @see #triggerAdhocCommand(String, String) -1045 */ -1046publicRundeckExecution runAdhocCommand(String project, String command) throws RundeckApiException, -1047 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1048return runAdhocCommand(project, command, null); -1049 } -1050 -1051/** -1052 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1053 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is -1054 * finished (or aborted) or is still running. The command will not be dispatched to nodes, but be executed on the -1055 * RunDeck server. -1056 * -1057 * @param project name of the project - mandatory -1058 * @param command to be executed - mandatory -1059 * @param poolingInterval for checking the status of the execution. Must be > 0. -1060 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -1061 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1062 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1063 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1064 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1065 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) -1066 * @see #runAdhocCommand(String, String, Properties, Integer, Boolean, long, TimeUnit) -1067 * @see #triggerAdhocCommand(String, String) -1068 */ -1069publicRundeckExecution runAdhocCommand(String project, String command, long poolingInterval, TimeUnit poolingUnit) -1070throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1071return runAdhocCommand(project, command, null, poolingInterval, poolingUnit); -1072 } -1073 -1074/** -1075 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1076 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still -1077 * running. The command will be dispatched to nodes, accordingly to the nodeFilters parameter. -1078 * -1079 * @param project name of the project - mandatory -1080 * @param command to be executed - mandatory -1081 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} -1082 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1083 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1084 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1085 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1086 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) -1087 * @see #runAdhocCommand(String, String, Properties, Integer, Boolean, long, TimeUnit) -1088 * @see #triggerAdhocCommand(String, String, Properties) -1089 */ -1090publicRundeckExecution runAdhocCommand(String project, String command, Properties nodeFilters) -1091throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1092return runAdhocCommand(project, command, nodeFilters, null, null); -1093 } -1094 -1095/** -1096 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1097 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is -1098 * finished (or aborted) or is still running. The command will be dispatched to nodes, accordingly to the -1099 * nodeFilters parameter. -1100 * -1101 * @param project name of the project - mandatory -1102 * @param command to be executed - mandatory -1103 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} -1104 * @param poolingInterval for checking the status of the execution. Must be > 0. -1105 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -1106 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1107 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1108 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1109 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1110 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) -1111 * @see #runAdhocCommand(String, String, Properties, Integer, Boolean, long, TimeUnit) -1112 * @see #triggerAdhocCommand(String, String, Properties) -1113 */ -1114publicRundeckExecution runAdhocCommand(String project, String command, Properties nodeFilters, -1115long poolingInterval, TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, -1116 RundeckApiTokenException, IllegalArgumentException { -1117return runAdhocCommand(project, command, nodeFilters, null, null, poolingInterval, poolingUnit); -1118 } -1119 -1120/** -1121 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1122 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still -1123 * running. The command will be dispatched to nodes, accordingly to the nodeFilters parameter. -1124 * -1125 * @param project name of the project - mandatory -1126 * @param command to be executed - mandatory -1127 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} -1128 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional -1129 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional -1130 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1131 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1132 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1133 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1134 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) -1135 * @see #runAdhocCommand(String, String, Properties, Integer, Boolean, long, TimeUnit) -1136 * @see #triggerAdhocCommand(String, String, Properties, Integer, Boolean) -1137 */ -1138publicRundeckExecution runAdhocCommand(String project, String command, Properties nodeFilters, -1139 Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, RundeckApiLoginException, -1140 RundeckApiTokenException, IllegalArgumentException { -1141return runAdhocCommand(project, -1142 command, -1143 nodeFilters, -1144 nodeThreadcount, -1145 nodeKeepgoing, -1146 DEFAULT_POOLING_INTERVAL, -1147 DEFAULT_POOLING_UNIT); -1148 } -1149 -1150/** -1151 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1152 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is -1153 * finished (or aborted) or is still running. The command will be dispatched to nodes, accordingly to the -1154 * nodeFilters parameter. -1155 * -1156 * @param project name of the project - mandatory -1157 * @param command to be executed - mandatory -1158 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} -1159 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional -1160 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional -1161 * @param poolingInterval for checking the status of the execution. Must be > 0. -1162 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -1163 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1164 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1165 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1166 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1167 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) -1168 * @see #triggerAdhocCommand(String, String, Properties, Integer, Boolean) -1169 */ -1170publicRundeckExecution runAdhocCommand(String project, String command, Properties nodeFilters, -1171 Integer nodeThreadcount, Boolean nodeKeepgoing, long poolingInterval, TimeUnit poolingUnit) -1172throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1173if (poolingInterval <= 0) { -1174 poolingInterval = DEFAULT_POOLING_INTERVAL; -1175 poolingUnit = DEFAULT_POOLING_UNIT; -1176 } -1177if (poolingUnit == null) { -1178 poolingUnit = DEFAULT_POOLING_UNIT; -1179 } -1180 -1181RundeckExecution execution = triggerAdhocCommand(project, command, nodeFilters, nodeThreadcount, nodeKeepgoing); -1182while (ExecutionStatus.RUNNING.equals(execution.getStatus())) { -1183try { -1184 Thread.sleep(poolingUnit.toMillis(poolingInterval)); -1185 } catch (InterruptedException e) { -1186break; -1187 } -1188 execution = getExecution(execution.getId()); +951 +952RundeckExecution execution = triggerJob(jobId, options, nodeFilters); +953while (ExecutionStatus.RUNNING.equals(execution.getStatus())) { +954try { +955 Thread.sleep(poolingUnit.toMillis(poolingInterval)); +956 } catch (InterruptedException e) { +957break; +958 } +959 execution = getExecution(execution.getId()); +960 } +961return execution; +962 } +963 +964/* +965 * Ad-hoc commands +966 */ +967 +968/** +969 * Trigger the execution of an ad-hoc command, and return immediately (without waiting the end of the execution). +970 * The command will not be dispatched to nodes, but be executed on the RunDeck server. +971 * +972 * @param project name of the project - mandatory +973 * @param command to be executed - mandatory +974 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +975 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +976 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +977 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +978 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) +979 * @see #triggerAdhocCommand(String, String, Properties, Integer, Boolean) +980 * @see #runAdhocCommand(String, String) +981 */ +982publicRundeckExecution triggerAdhocCommand(String project, String command) throws RundeckApiException, +983 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +984return triggerAdhocCommand(project, command, null); +985 } +986 +987/** +988 * Trigger the execution of an ad-hoc command, and return immediately (without waiting the end of the execution). +989 * The command will be dispatched to nodes, accordingly to the nodeFilters parameter. +990 * +991 * @param project name of the project - mandatory +992 * @param command to be executed - mandatory +993 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} +994 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +995 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +996 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +997 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +998 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) +999 * @see #triggerAdhocCommand(String, String, Properties, Integer, Boolean) +1000 * @see #runAdhocCommand(String, String, Properties) +1001 */ +1002publicRundeckExecution triggerAdhocCommand(String project, String command, Properties nodeFilters) +1003throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1004return triggerAdhocCommand(project, command, nodeFilters, null, null); +1005 } +1006 +1007/** +1008 * Trigger the execution of an ad-hoc command, and return immediately (without waiting the end of the execution). +1009 * The command will be dispatched to nodes, accordingly to the nodeFilters parameter. +1010 * +1011 * @param project name of the project - mandatory +1012 * @param command to be executed - mandatory +1013 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} +1014 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional +1015 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional +1016 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +1017 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1018 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1019 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1020 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) +1021 * @see #triggerAdhocCommand(String, String) +1022 * @see #runAdhocCommand(String, String, Properties) +1023 */ +1024publicRundeckExecution triggerAdhocCommand(String project, String command, Properties nodeFilters, +1025 Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, RundeckApiLoginException, +1026 RundeckApiTokenException, IllegalArgumentException { +1027 AssertUtil.notBlank(project, "project is mandatory to trigger an ad-hoc command !"); +1028 AssertUtil.notBlank(command, "command is mandatory to trigger an ad-hoc command !"); +1029RundeckExecution execution = newApiCall(this).get(newApiPathBuilder("/run/command").param("project", project) +1030 .param("exec", command) +1031 .param("nodeThreadcount", +1032 nodeThreadcount) +1033 .param("nodeKeepgoing", +1034 nodeKeepgoing) +1035 .nodeFilters(nodeFilters), +1036newExecutionParser("result/execution")); +1037// the first call just returns the ID of the execution, so we need another call to get a "real" execution +1038return getExecution(execution.getId()); +1039 } +1040 +1041/** +1042 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1043 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still +1044 * running. The command will not be dispatched to nodes, but be executed on the RunDeck server. +1045 * +1046 * @param project name of the project - mandatory +1047 * @param command to be executed - mandatory +1048 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1049 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1050 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1051 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1052 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) +1053 * @see #runAdhocCommand(String, String, Properties, Integer, Boolean, long, TimeUnit) +1054 * @see #triggerAdhocCommand(String, String) +1055 */ +1056publicRundeckExecution runAdhocCommand(String project, String command) throws RundeckApiException, +1057 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1058return runAdhocCommand(project, command, null); +1059 } +1060 +1061/** +1062 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1063 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is +1064 * finished (or aborted) or is still running. The command will not be dispatched to nodes, but be executed on the +1065 * RunDeck server. +1066 * +1067 * @param project name of the project - mandatory +1068 * @param command to be executed - mandatory +1069 * @param poolingInterval for checking the status of the execution. Must be > 0. +1070 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +1071 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1072 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1073 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1074 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1075 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) +1076 * @see #runAdhocCommand(String, String, Properties, Integer, Boolean, long, TimeUnit) +1077 * @see #triggerAdhocCommand(String, String) +1078 */ +1079publicRundeckExecution runAdhocCommand(String project, String command, long poolingInterval, TimeUnit poolingUnit) +1080throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1081return runAdhocCommand(project, command, null, poolingInterval, poolingUnit); +1082 } +1083 +1084/** +1085 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1086 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still +1087 * running. The command will be dispatched to nodes, accordingly to the nodeFilters parameter. +1088 * +1089 * @param project name of the project - mandatory +1090 * @param command to be executed - mandatory +1091 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} +1092 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1093 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1094 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1095 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1096 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) +1097 * @see #runAdhocCommand(String, String, Properties, Integer, Boolean, long, TimeUnit) +1098 * @see #triggerAdhocCommand(String, String, Properties) +1099 */ +1100publicRundeckExecution runAdhocCommand(String project, String command, Properties nodeFilters) +1101throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1102return runAdhocCommand(project, command, nodeFilters, null, null); +1103 } +1104 +1105/** +1106 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1107 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is +1108 * finished (or aborted) or is still running. The command will be dispatched to nodes, accordingly to the +1109 * nodeFilters parameter. +1110 * +1111 * @param project name of the project - mandatory +1112 * @param command to be executed - mandatory +1113 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} +1114 * @param poolingInterval for checking the status of the execution. Must be > 0. +1115 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +1116 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1117 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1118 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1119 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1120 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) +1121 * @see #runAdhocCommand(String, String, Properties, Integer, Boolean, long, TimeUnit) +1122 * @see #triggerAdhocCommand(String, String, Properties) +1123 */ +1124publicRundeckExecution runAdhocCommand(String project, String command, Properties nodeFilters, +1125long poolingInterval, TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, +1126 RundeckApiTokenException, IllegalArgumentException { +1127return runAdhocCommand(project, command, nodeFilters, null, null, poolingInterval, poolingUnit); +1128 } +1129 +1130/** +1131 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1132 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still +1133 * running. The command will be dispatched to nodes, accordingly to the nodeFilters parameter. +1134 * +1135 * @param project name of the project - mandatory +1136 * @param command to be executed - mandatory +1137 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} +1138 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional +1139 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional +1140 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1141 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1142 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1143 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1144 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) +1145 * @see #runAdhocCommand(String, String, Properties, Integer, Boolean, long, TimeUnit) +1146 * @see #triggerAdhocCommand(String, String, Properties, Integer, Boolean) +1147 */ +1148publicRundeckExecution runAdhocCommand(String project, String command, Properties nodeFilters, +1149 Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, RundeckApiLoginException, +1150 RundeckApiTokenException, IllegalArgumentException { +1151return runAdhocCommand(project, +1152 command, +1153 nodeFilters, +1154 nodeThreadcount, +1155 nodeKeepgoing, +1156 DEFAULT_POOLING_INTERVAL, +1157 DEFAULT_POOLING_UNIT); +1158 } +1159 +1160/** +1161 * Run an ad-hoc command, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1162 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is +1163 * finished (or aborted) or is still running. The command will be dispatched to nodes, accordingly to the +1164 * nodeFilters parameter. +1165 * +1166 * @param project name of the project - mandatory +1167 * @param command to be executed - mandatory +1168 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} +1169 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional +1170 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional +1171 * @param poolingInterval for checking the status of the execution. Must be > 0. +1172 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +1173 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1174 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1175 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1176 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1177 * @throws IllegalArgumentException if the project or command is blank (null, empty or whitespace) +1178 * @see #triggerAdhocCommand(String, String, Properties, Integer, Boolean) +1179 */ +1180publicRundeckExecution runAdhocCommand(String project, String command, Properties nodeFilters, +1181 Integer nodeThreadcount, Boolean nodeKeepgoing, long poolingInterval, TimeUnit poolingUnit) +1182throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1183if (poolingInterval <= 0) { +1184 poolingInterval = DEFAULT_POOLING_INTERVAL; +1185 poolingUnit = DEFAULT_POOLING_UNIT; +1186 } +1187if (poolingUnit == null) { +1188 poolingUnit = DEFAULT_POOLING_UNIT; 1189 } -1190return execution; -1191 } -1192 -1193/* -1194 * Ad-hoc scripts -1195 */ -1196 -1197/** -1198 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The -1199 * script will not be dispatched to nodes, but be executed on the RunDeck server. -1200 * -1201 * @param project name of the project - mandatory -1202 * @param scriptFilename filename of the script to be executed - mandatory -1203 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -1204 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1205 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1206 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1207 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1208 * @throws IOException if we failed to read the file -1209 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) -1210 * @see #runAdhocScript(String, String) -1211 */ -1212publicRundeckExecution triggerAdhocScript(String project, String scriptFilename) throws RundeckApiException, -1213 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -1214return triggerAdhocScript(project, scriptFilename, null); -1215 } -1216 -1217/** -1218 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The -1219 * script will not be dispatched to nodes, but be executed on the RunDeck server. -1220 * -1221 * @param project name of the project - mandatory -1222 * @param scriptFilename filename of the script to be executed - mandatory -1223 * @param options of the script - optional. See {@link OptionsBuilder}. -1224 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -1225 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1226 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1227 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1228 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1229 * @throws IOException if we failed to read the file -1230 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) -1231 * @see #runAdhocScript(String, String, Properties) -1232 */ -1233publicRundeckExecution triggerAdhocScript(String project, String scriptFilename, Properties options) -1234throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, -1235 IOException { -1236return triggerAdhocScript(project, scriptFilename, options, null); -1237 } -1238 -1239/** -1240 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The -1241 * script will be dispatched to nodes, accordingly to the nodeFilters parameter. -1242 * -1243 * @param project name of the project - mandatory -1244 * @param scriptFilename filename of the script to be executed - mandatory -1245 * @param options of the script - optional. See {@link OptionsBuilder}. -1246 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} -1247 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -1248 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1249 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1250 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1251 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1252 * @throws IOException if we failed to read the file -1253 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) -1254 * @see #runAdhocScript(String, String, Properties, Properties) -1255 */ -1256publicRundeckExecution triggerAdhocScript(String project, String scriptFilename, Properties options, -1257 Properties nodeFilters) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, -1258 IllegalArgumentException, IOException { -1259return triggerAdhocScript(project, scriptFilename, options, nodeFilters, null, null); -1260 } -1261 -1262/** -1263 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The -1264 * script will be dispatched to nodes, accordingly to the nodeFilters parameter. -1265 * -1266 * @param project name of the project - mandatory -1267 * @param scriptFilename filename of the script to be executed - mandatory -1268 * @param options of the script - optional. See {@link OptionsBuilder}. -1269 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} -1270 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional -1271 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional -1272 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -1273 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1274 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1275 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1276 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1277 * @throws IOException if we failed to read the file -1278 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) -1279 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) -1280 */ -1281publicRundeckExecution triggerAdhocScript(String project, String scriptFilename, Properties options, -1282 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, -1283 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -1284 AssertUtil.notBlank(scriptFilename, "scriptFilename is mandatory to trigger an ad-hoc script !"); -1285 FileInputStream stream = null; -1286try { -1287 stream = FileUtils.openInputStream(new File(scriptFilename)); -1288return triggerAdhocScript(project, stream, options, nodeFilters, nodeThreadcount, nodeKeepgoing); -1289 } finally { -1290 IOUtils.closeQuietly(stream); -1291 } -1292 } -1293 -1294/** -1295 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The -1296 * script will not be dispatched to nodes, but be executed on the RunDeck server. -1297 * -1298 * @param project name of the project - mandatory -1299 * @param script inputStream for reading the script to be executed - mandatory -1300 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -1301 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1302 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1303 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1304 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1305 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) -1306 * @see #runAdhocScript(String, InputStream) -1307 */ -1308publicRundeckExecution triggerAdhocScript(String project, InputStream script) throws RundeckApiException, -1309 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1310return triggerAdhocScript(project, script, null); -1311 } -1312 -1313/** -1314 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The -1315 * script will not be dispatched to nodes, but be executed on the RunDeck server. -1316 * -1317 * @param project name of the project - mandatory -1318 * @param script inputStream for reading the script to be executed - mandatory -1319 * @param options of the script - optional. See {@link OptionsBuilder}. -1320 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -1321 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1322 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1323 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1324 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1325 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) -1326 * @see #runAdhocScript(String, InputStream, Properties) -1327 */ -1328publicRundeckExecution triggerAdhocScript(String project, InputStream script, Properties options) -1329throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1330return triggerAdhocScript(project, script, options, null); -1331 } -1332 -1333/** -1334 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The -1335 * script will be dispatched to nodes, accordingly to the nodeFilters parameter. -1336 * -1337 * @param project name of the project - mandatory -1338 * @param script inputStream for reading the script to be executed - mandatory -1339 * @param options of the script - optional. See {@link OptionsBuilder}. -1340 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} -1341 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -1342 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1343 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1344 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1345 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1346 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) -1347 * @see #runAdhocScript(String, InputStream, Properties, Properties) -1348 */ -1349publicRundeckExecution triggerAdhocScript(String project, InputStream script, Properties options, -1350 Properties nodeFilters) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, -1351 IllegalArgumentException { -1352return triggerAdhocScript(project, script, options, nodeFilters, null, null); -1353 } -1354 -1355/** -1356 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The -1357 * script will be dispatched to nodes, accordingly to the nodeFilters parameter. -1358 * -1359 * @param project name of the project - mandatory -1360 * @param script inputStream for reading the script to be executed - mandatory -1361 * @param options of the script - optional. See {@link OptionsBuilder}. -1362 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} -1363 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional -1364 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional -1365 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null -1366 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1367 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1368 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1369 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1370 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) -1371 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) -1372 */ -1373publicRundeckExecution triggerAdhocScript(String project, InputStream script, Properties options, -1374 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, -1375 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1376 AssertUtil.notBlank(project, "project is mandatory to trigger an ad-hoc script !"); -1377 AssertUtil.notNull(script, "script is mandatory to trigger an ad-hoc script !"); -1378RundeckExecution execution = newApiCall(this).post(newApiPathBuilder("/run/script").param("project", project) -1379 .attach("scriptFile", -1380 script) -1381 .param("argString", -1382 ParametersUtil.generateArgString(options)) -1383 .param("nodeThreadcount", -1384 nodeThreadcount) -1385 .param("nodeKeepgoing", -1386 nodeKeepgoing) -1387 .nodeFilters(nodeFilters), -1388newExecutionParser("result/execution")); -1389// the first call just returns the ID of the execution, so we need another call to get a "real" execution -1390return getExecution(execution.getId()); -1391 } -1392 -1393/** -1394 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1395 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still -1396 * running. The script will not be dispatched to nodes, but be executed on the RunDeck server. -1397 * -1398 * @param project name of the project - mandatory -1399 * @param scriptFilename filename of the script to be executed - mandatory -1400 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1401 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1402 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1403 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1404 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1405 * @throws IOException if we failed to read the file -1406 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) -1407 * @see #triggerAdhocScript(String, String) -1408 */ -1409publicRundeckExecution runAdhocScript(String project, String scriptFilename) throws RundeckApiException, -1410 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -1411return runAdhocScript(project, scriptFilename, null); -1412 } -1413 -1414/** -1415 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1416 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is -1417 * finished (or aborted) or is still running. The script will not be dispatched to nodes, but be executed on the -1418 * RunDeck server. -1419 * -1420 * @param project name of the project - mandatory -1421 * @param scriptFilename filename of the script to be executed - mandatory -1422 * @param poolingInterval for checking the status of the execution. Must be > 0. -1423 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -1424 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1425 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1426 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1427 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1428 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1429 * @throws IOException if we failed to read the file -1430 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) -1431 * @see #triggerAdhocScript(String, String) -1432 */ -1433publicRundeckExecution runAdhocScript(String project, String scriptFilename, long poolingInterval, -1434 TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, -1435 IllegalArgumentException, IOException { -1436return runAdhocScript(project, scriptFilename, null, poolingInterval, poolingUnit); -1437 } -1438 -1439/** -1440 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1441 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still -1442 * running. The script will not be dispatched to nodes, but be executed on the RunDeck server. -1443 * -1444 * @param project name of the project - mandatory -1445 * @param scriptFilename filename of the script to be executed - mandatory -1446 * @param options of the script - optional. See {@link OptionsBuilder}. -1447 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1448 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1449 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1450 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1451 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1452 * @throws IOException if we failed to read the file -1453 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) -1454 * @see #triggerAdhocScript(String, String, Properties) -1455 */ -1456publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options) -1457throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, -1458 IOException { -1459return runAdhocScript(project, scriptFilename, options, null); -1460 } -1461 -1462/** -1463 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1464 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is -1465 * finished (or aborted) or is still running. The script will not be dispatched to nodes, but be executed on the -1466 * RunDeck server. -1467 * -1468 * @param project name of the project - mandatory -1469 * @param scriptFilename filename of the script to be executed - mandatory -1470 * @param options of the script - optional. See {@link OptionsBuilder}. -1471 * @param poolingInterval for checking the status of the execution. Must be > 0. -1472 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -1473 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1474 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1475 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1476 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1477 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1478 * @throws IOException if we failed to read the file -1479 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) -1480 * @see #triggerAdhocScript(String, String, Properties) -1481 */ -1482publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options, -1483long poolingInterval, TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, -1484 RundeckApiTokenException, IllegalArgumentException, IOException { -1485return runAdhocScript(project, scriptFilename, options, null, poolingInterval, poolingUnit); -1486 } -1487 -1488/** -1489 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1490 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still -1491 * running. The script will be dispatched to nodes, accordingly to the nodeFilters parameter. -1492 * -1493 * @param project name of the project - mandatory -1494 * @param scriptFilename filename of the script to be executed - mandatory -1495 * @param options of the script - optional. See {@link OptionsBuilder}. -1496 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} -1497 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1498 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1499 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1500 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1501 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1502 * @throws IOException if we failed to read the file -1503 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) -1504 * @see #triggerAdhocScript(String, String, Properties, Properties) -1505 */ -1506publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options, -1507 Properties nodeFilters) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, -1508 IllegalArgumentException, IOException { -1509return runAdhocScript(project, scriptFilename, options, nodeFilters, null, null); -1510 } -1511 -1512/** -1513 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1514 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is -1515 * finished (or aborted) or is still running. The script will be dispatched to nodes, accordingly to the nodeFilters -1516 * parameter. -1517 * -1518 * @param project name of the project - mandatory -1519 * @param scriptFilename filename of the script to be executed - mandatory -1520 * @param options of the script - optional. See {@link OptionsBuilder}. -1521 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} -1522 * @param poolingInterval for checking the status of the execution. Must be > 0. -1523 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -1524 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1525 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1526 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1527 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1528 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1529 * @throws IOException if we failed to read the file -1530 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) -1531 * @see #triggerAdhocScript(String, String, Properties, Properties) -1532 */ -1533publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options, -1534 Properties nodeFilters, long poolingInterval, TimeUnit poolingUnit) throws RundeckApiException, -1535 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -1536return runAdhocScript(project, scriptFilename, options, nodeFilters, null, null, poolingInterval, poolingUnit); -1537 } -1538 -1539/** -1540 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1541 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still -1542 * running. The script will be dispatched to nodes, accordingly to the nodeFilters parameter. -1543 * -1544 * @param project name of the project - mandatory -1545 * @param scriptFilename filename of the script to be executed - mandatory -1546 * @param options of the script - optional. See {@link OptionsBuilder}. -1547 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} -1548 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional -1549 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional -1550 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1551 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1552 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1553 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1554 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1555 * @throws IOException if we failed to read the file -1556 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) -1557 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) -1558 */ -1559publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options, -1560 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, -1561 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -1562return runAdhocScript(project, -1563 scriptFilename, -1564 options, -1565 nodeFilters, -1566 nodeThreadcount, -1567 nodeKeepgoing, -1568 DEFAULT_POOLING_INTERVAL, -1569 DEFAULT_POOLING_UNIT); -1570 } -1571 -1572/** -1573 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1574 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is -1575 * finished (or aborted) or is still running. The script will be dispatched to nodes, accordingly to the nodeFilters -1576 * parameter. -1577 * -1578 * @param project name of the project - mandatory -1579 * @param scriptFilename filename of the script to be executed - mandatory -1580 * @param options of the script - optional. See {@link OptionsBuilder}. -1581 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} -1582 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional -1583 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional -1584 * @param poolingInterval for checking the status of the execution. Must be > 0. -1585 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -1586 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1587 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1588 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1589 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1590 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) -1591 * @throws IOException if we failed to read the file -1592 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) -1593 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) -1594 */ -1595publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options, -1596 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing, long poolingInterval, -1597 TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, -1598 IllegalArgumentException, IOException { -1599 AssertUtil.notBlank(scriptFilename, "scriptFilename is mandatory to run an ad-hoc script !"); -1600 FileInputStream stream = null; -1601try { -1602 stream = FileUtils.openInputStream(new File(scriptFilename)); -1603return runAdhocScript(project, -1604 stream, -1605 options, -1606 nodeFilters, -1607 nodeThreadcount, -1608 nodeKeepgoing, -1609 poolingInterval, -1610 poolingUnit); -1611 } finally { -1612 IOUtils.closeQuietly(stream); -1613 } -1614 } -1615 -1616/** -1617 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1618 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still -1619 * running. The script will not be dispatched to nodes, but be executed on the RunDeck server. -1620 * -1621 * @param project name of the project - mandatory -1622 * @param script inputStream for reading the script to be executed - mandatory -1623 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1624 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1625 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1626 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1627 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1628 * @throws IOException if we failed to read the file -1629 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) -1630 * @see #triggerAdhocScript(String, InputStream) -1631 */ -1632publicRundeckExecution runAdhocScript(String project, InputStream script) throws RundeckApiException, -1633 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -1634return runAdhocScript(project, script, null); -1635 } -1636 -1637/** -1638 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1639 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is -1640 * finished (or aborted) or is still running. The script will not be dispatched to nodes, but be executed on the -1641 * RunDeck server. -1642 * -1643 * @param project name of the project - mandatory -1644 * @param script inputStream for reading the script to be executed - mandatory -1645 * @param poolingInterval for checking the status of the execution. Must be > 0. -1646 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -1647 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1648 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1649 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1650 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1651 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1652 * @throws IOException if we failed to read the file -1653 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) -1654 * @see #triggerAdhocScript(String, InputStream) -1655 */ -1656publicRundeckExecution runAdhocScript(String project, InputStream script, long poolingInterval, -1657 TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, -1658 IllegalArgumentException, IOException { -1659return runAdhocScript(project, script, null, poolingInterval, poolingUnit); -1660 } -1661 -1662/** -1663 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1664 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still -1665 * running. The script will not be dispatched to nodes, but be executed on the RunDeck server. -1666 * -1667 * @param project name of the project - mandatory -1668 * @param script inputStream for reading the script to be executed - mandatory -1669 * @param options of the script - optional. See {@link OptionsBuilder}. -1670 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1671 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1672 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1673 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1674 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1675 * @throws IOException if we failed to read the file -1676 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) -1677 * @see #triggerAdhocScript(String, InputStream, Properties) -1678 */ -1679publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options) -1680throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, -1681 IOException { -1682return runAdhocScript(project, script, options, null); -1683 } -1684 -1685/** -1686 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1687 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is -1688 * finished (or aborted) or is still running. The script will not be dispatched to nodes, but be executed on the -1689 * RunDeck server. -1690 * -1691 * @param project name of the project - mandatory -1692 * @param script inputStream for reading the script to be executed - mandatory -1693 * @param options of the script - optional. See {@link OptionsBuilder}. -1694 * @param poolingInterval for checking the status of the execution. Must be > 0. -1695 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -1696 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1697 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1698 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1699 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1700 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1701 * @throws IOException if we failed to read the file -1702 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) -1703 * @see #triggerAdhocScript(String, InputStream, Properties) -1704 */ -1705publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options, -1706long poolingInterval, TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, -1707 RundeckApiTokenException, IllegalArgumentException, IOException { -1708return runAdhocScript(project, script, options, null, poolingInterval, poolingUnit); -1709 } -1710 -1711/** -1712 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1713 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still -1714 * running. The script will be dispatched to nodes, accordingly to the nodeFilters parameter. -1715 * -1716 * @param project name of the project - mandatory -1717 * @param script inputStream for reading the script to be executed - mandatory -1718 * @param options of the script - optional. See {@link OptionsBuilder}. -1719 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} -1720 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1721 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1722 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1723 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1724 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1725 * @throws IOException if we failed to read the file -1726 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) -1727 * @see #triggerAdhocScript(String, InputStream, Properties, Properties) -1728 */ -1729publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options, -1730 Properties nodeFilters) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, -1731 IllegalArgumentException, IOException { -1732return runAdhocScript(project, script, options, nodeFilters, null, null); -1733 } -1734 -1735/** -1736 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1737 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is -1738 * finished (or aborted) or is still running. The script will be dispatched to nodes, accordingly to the nodeFilters -1739 * parameter. -1740 * -1741 * @param project name of the project - mandatory -1742 * @param script inputStream for reading the script to be executed - mandatory -1743 * @param options of the script - optional. See {@link OptionsBuilder}. -1744 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} -1745 * @param poolingInterval for checking the status of the execution. Must be > 0. -1746 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -1747 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1748 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1749 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1750 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1751 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1752 * @throws IOException if we failed to read the file -1753 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) -1754 * @see #triggerAdhocScript(String, InputStream, Properties, Properties) -1755 */ -1756publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options, -1757 Properties nodeFilters, long poolingInterval, TimeUnit poolingUnit) throws RundeckApiException, -1758 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -1759return runAdhocScript(project, script, options, nodeFilters, null, null, poolingInterval, poolingUnit); -1760 } -1761 -1762/** -1763 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1764 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still -1765 * running. The script will be dispatched to nodes, accordingly to the nodeFilters parameter. -1766 * -1767 * @param project name of the project - mandatory -1768 * @param script inputStream for reading the script to be executed - mandatory -1769 * @param options of the script - optional. See {@link OptionsBuilder}. -1770 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} -1771 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional -1772 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional -1773 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1774 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1775 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1776 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1777 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1778 * @throws IOException if we failed to read the file -1779 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) -1780 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) -1781 */ -1782publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options, -1783 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, -1784 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { -1785return runAdhocScript(project, -1786 script, -1787 options, -1788 nodeFilters, -1789 nodeThreadcount, -1790 nodeKeepgoing, -1791 DEFAULT_POOLING_INTERVAL, -1792 DEFAULT_POOLING_UNIT); -1793 } -1794 -1795/** -1796 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck -1797 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is -1798 * finished (or aborted) or is still running. The script will be dispatched to nodes, accordingly to the nodeFilters -1799 * parameter. -1800 * -1801 * @param project name of the project - mandatory -1802 * @param script inputStream for reading the script to be executed - mandatory -1803 * @param options of the script - optional. See {@link OptionsBuilder}. -1804 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} -1805 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional -1806 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional -1807 * @param poolingInterval for checking the status of the execution. Must be > 0. -1808 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. -1809 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null -1810 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1811 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1812 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1813 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null -1814 * @throws IOException if we failed to read the file -1815 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) -1816 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) -1817 */ -1818publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options, -1819 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing, long poolingInterval, -1820 TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, -1821 IllegalArgumentException { -1822if (poolingInterval <= 0) { -1823 poolingInterval = DEFAULT_POOLING_INTERVAL; -1824 poolingUnit = DEFAULT_POOLING_UNIT; -1825 } -1826if (poolingUnit == null) { -1827 poolingUnit = DEFAULT_POOLING_UNIT; -1828 } -1829 -1830RundeckExecution execution = triggerAdhocScript(project, -1831 script, -1832 options, -1833 nodeFilters, -1834 nodeThreadcount, -1835 nodeKeepgoing); -1836while (ExecutionStatus.RUNNING.equals(execution.getStatus())) { -1837try { -1838 Thread.sleep(poolingUnit.toMillis(poolingInterval)); -1839 } catch (InterruptedException e) { -1840break; -1841 } -1842 execution = getExecution(execution.getId()); -1843 } -1844return execution; -1845 } -1846 -1847/* -1848 * Executions -1849 */ -1850 -1851/** -1852 * Get all running executions (for all projects) -1853 * -1854 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null -1855 * @throws RundeckApiException in case of error when calling the API -1856 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1857 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1858 * @see #getRunningExecutions(String) -1859 */ -1860public List<RundeckExecution> getRunningExecutions() throws RundeckApiException, RundeckApiLoginException, -1861RundeckApiTokenException { -1862 List<RundeckExecution> executions = new ArrayList<RundeckExecution>(); -1863for (RundeckProject project : getProjects()) { -1864 executions.addAll(getRunningExecutions(project.getName())); -1865 } -1866return executions; -1867 } -1868 -1869/** -1870 * Get the running executions for the given project -1871 * -1872 * @param project name of the project - mandatory -1873 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null -1874 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -1875 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1876 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1877 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -1878 * @see #getRunningExecutions() -1879 */ -1880public List<RundeckExecution> getRunningExecutions(String project) throws RundeckApiException, -1881 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1882 AssertUtil.notBlank(project, "project is mandatory get all running executions !"); -1883returnnewApiCall(this).get(newApiPathBuilder("/executions/running").param("project", project), -1884new ListParser<RundeckExecution>(newExecutionParser(), -1885"result/executions/execution")); -1886 } -1887 -1888/** -1889 * Get the executions of the given job -1890 * -1891 * @param jobId identifier of the job - mandatory -1892 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null -1893 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -1894 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1895 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1896 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -1897 * @see #getJobExecutions(String, RundeckExecution.ExecutionStatus, Long, Long) -1898 */ -1899public List<RundeckExecution> getJobExecutions(String jobId) throws RundeckApiException, RundeckApiLoginException, -1900 RundeckApiTokenException, IllegalArgumentException { -1901return getJobExecutions(jobId, (ExecutionStatus) null); -1902 } -1903 -1904/** -1905 * Get the executions of the given job -1906 * -1907 * @param jobId identifier of the job - mandatory -1908 * @param status of the executions, see {@link ExecutionStatus} - optional (null for all) -1909 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null -1910 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -1911 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1912 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1913 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace), or the executionStatus is -1914 * invalid -1915 * @see #getJobExecutions(String, String, Long, Long) -1916 */ -1917public List<RundeckExecution> getJobExecutions(String jobId, String status) throws RundeckApiException, -1918 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1919return getJobExecutions(jobId, -1920 StringUtils.isBlank(status) ? null : ExecutionStatus.valueOf(StringUtils.upperCase(status))); -1921 } -1922 -1923/** -1924 * Get the executions of the given job -1925 * -1926 * @param jobId identifier of the job - mandatory -1927 * @param status of the executions, see {@link ExecutionStatus} - optional (null for all) -1928 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null -1929 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -1930 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1931 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1932 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -1933 * @see #getJobExecutions(String, RundeckExecution.ExecutionStatus, Long, Long) -1934 */ -1935public List<RundeckExecution> getJobExecutions(String jobId, ExecutionStatus status) throws RundeckApiException, -1936 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1937return getJobExecutions(jobId, status, null, null); -1938 } -1939 -1940/** -1941 * Get the executions of the given job -1942 * -1943 * @param jobId identifier of the job - mandatory -1944 * @param status of the executions, see {@link ExecutionStatus} - optional (null for all) -1945 * @param max number of results to return - optional (null for all) -1946 * @param offset the 0-indexed offset for the first result to return - optional -1947 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null -1948 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -1949 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1950 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1951 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace), or the executionStatus is -1952 * invalid -1953 * @see #getJobExecutions(String, RundeckExecution.ExecutionStatus, Long, Long) -1954 */ -1955public List<RundeckExecution> getJobExecutions(String jobId, String status, Long max, Long offset) -1956throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1957return getJobExecutions(jobId, -1958 StringUtils.isBlank(status) ? null : ExecutionStatus.valueOf(StringUtils.upperCase(status)), -1959 max, -1960 offset); -1961 } -1962 -1963/** -1964 * Get the executions of the given job -1965 * -1966 * @param jobId identifier of the job - mandatory -1967 * @param status of the executions, see {@link ExecutionStatus} - optional (null for all) -1968 * @param max number of results to return - optional (null for all) -1969 * @param offset the 0-indexed offset for the first result to return - optional -1970 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null -1971 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) -1972 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1973 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1974 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) -1975 */ -1976public List<RundeckExecution> getJobExecutions(String jobId, ExecutionStatus status, Long max, Long offset) -1977throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -1978 AssertUtil.notBlank(jobId, "jobId is mandatory to get the executions of a job !"); -1979returnnewApiCall(this).get(newApiPathBuilder("/job/", jobId, "/executions").param("status", status) -1980 .param("max", max) -1981 .param("offset", offset), -1982new ListParser<RundeckExecution>(newExecutionParser(), -1983"result/executions/execution")); -1984 } -1985 -1986/** -1987 * Get a single execution, identified by the given ID -1988 * -1989 * @param executionId identifier of the execution - mandatory -1990 * @return a {@link RundeckExecution} instance - won't be null -1991 * @throws RundeckApiException in case of error when calling the API (non-existent execution with this ID) -1992 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -1993 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -1994 * @throws IllegalArgumentException if the executionId is null -1995 */ -1996publicRundeckExecution getExecution(Long executionId) throws RundeckApiException, RundeckApiLoginException, -1997 RundeckApiTokenException, IllegalArgumentException { -1998 AssertUtil.notNull(executionId, "executionId is mandatory to get the details of an execution !"); -1999returnnewApiCall(this).get(newApiPathBuilder("/execution/", executionId.toString()), -2000newExecutionParser("result/executions/execution")); -2001 } -2002 -2003/** -2004 * Abort an execution (identified by the given ID). The execution should be running... -2005 * -2006 * @param executionId identifier of the execution - mandatory -2007 * @return a {@link RundeckAbort} instance - won't be null -2008 * @throws RundeckApiException in case of error when calling the API (non-existent execution with this ID) -2009 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2010 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2011 * @throws IllegalArgumentException if the executionId is null -2012 */ -2013publicRundeckAbort abortExecution(Long executionId) throws RundeckApiException, RundeckApiLoginException, -2014 RundeckApiTokenException, IllegalArgumentException { -2015 AssertUtil.notNull(executionId, "executionId is mandatory to abort an execution !"); -2016returnnewApiCall(this).get(newApiPathBuilder("/execution/", executionId.toString(), "/abort"), -2017newAbortParser("result/abort")); -2018 } -2019 -2020/* -2021 * History -2022 */ -2023 -2024/** -2025 * Get the (events) history for the given project -2026 * -2027 * @param project name of the project - mandatory -2028 * @return a {@link RundeckHistory} instance - won't be null -2029 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -2030 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2031 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2032 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -2033 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) -2034 */ -2035publicRundeckHistory getHistory(String project) throws RundeckApiException, RundeckApiLoginException, -2036 RundeckApiTokenException, IllegalArgumentException { -2037return getHistory(project, null, null, null, null, null, null, null, null); -2038 } -2039 -2040/** -2041 * Get the (events) history for the given project -2042 * -2043 * @param project name of the project - mandatory -2044 * @param max number of results to return - optional (default to 20) -2045 * @param offset the 0-indexed offset for the first result to return - optional (default to O) -2046 * @return a {@link RundeckHistory} instance - won't be null -2047 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -2048 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2049 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2050 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -2051 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) -2052 */ -2053publicRundeckHistory getHistory(String project, Long max, Long offset) throws RundeckApiException, -2054 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -2055return getHistory(project, null, null, null, null, null, null, max, offset); -2056 } -2057 -2058/** -2059 * Get the (events) history for the given project -2060 * -2061 * @param project name of the project - mandatory -2062 * @param jobId include only events matching the given job ID - optional -2063 * @param reportId include only events matching the given report ID - optional -2064 * @param user include only events created by the given user - optional -2065 * @return a {@link RundeckHistory} instance - won't be null -2066 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -2067 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2068 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2069 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -2070 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) -2071 */ -2072publicRundeckHistory getHistory(String project, String jobId, String reportId, String user) -2073throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -2074return getHistory(project, jobId, reportId, user, null, null, null, null, null); -2075 } -2076 -2077/** -2078 * Get the (events) history for the given project -2079 * -2080 * @param project name of the project - mandatory -2081 * @param jobId include only events matching the given job ID - optional -2082 * @param reportId include only events matching the given report ID - optional -2083 * @param user include only events created by the given user - optional -2084 * @param max number of results to return - optional (default to 20) -2085 * @param offset the 0-indexed offset for the first result to return - optional (default to O) -2086 * @return a {@link RundeckHistory} instance - won't be null -2087 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -2088 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2089 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2090 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -2091 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) -2092 */ -2093publicRundeckHistory getHistory(String project, String jobId, String reportId, String user, Long max, Long offset) -2094throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -2095return getHistory(project, jobId, reportId, user, null, null, null, max, offset); -2096 } -2097 -2098/** -2099 * Get the (events) history for the given project -2100 * -2101 * @param project name of the project - mandatory -2102 * @param recent include only events matching the given period of time. Format : "XY", where X is an integer, and Y -2103 * is one of : "h" (hour), "d" (day), "w" (week), "m" (month), "y" (year). Example : "2w" (= last 2 -2104 * weeks), "5d" (= last 5 days), etc. Optional. -2105 * @return a {@link RundeckHistory} instance - won't be null -2106 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -2107 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2108 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2109 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -2110 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) -2111 */ -2112publicRundeckHistory getHistory(String project, String recent) throws RundeckApiException, -2113 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -2114return getHistory(project, null, null, null, recent, null, null, null, null); -2115 } -2116 -2117/** -2118 * Get the (events) history for the given project -2119 * -2120 * @param project name of the project - mandatory -2121 * @param recent include only events matching the given period of time. Format : "XY", where X is an integer, and Y -2122 * is one of : "h" (hour), "d" (day), "w" (week), "m" (month), "y" (year). Example : "2w" (= last 2 -2123 * weeks), "5d" (= last 5 days), etc. Optional. -2124 * @param max number of results to return - optional (default to 20) -2125 * @param offset the 0-indexed offset for the first result to return - optional (default to O) -2126 * @return a {@link RundeckHistory} instance - won't be null -2127 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -2128 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2129 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2130 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -2131 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) -2132 */ -2133publicRundeckHistory getHistory(String project, String recent, Long max, Long offset) throws RundeckApiException, -2134 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -2135return getHistory(project, null, null, null, recent, null, null, max, offset); -2136 } -2137 -2138/** -2139 * Get the (events) history for the given project -2140 * -2141 * @param project name of the project - mandatory -2142 * @param begin date for the earlier events to retrieve - optional -2143 * @param end date for the latest events to retrieve - optional -2144 * @return a {@link RundeckHistory} instance - won't be null -2145 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -2146 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2147 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2148 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -2149 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) -2150 */ -2151publicRundeckHistory getHistory(String project, Date begin, Date end) throws RundeckApiException, -2152 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -2153return getHistory(project, null, null, null, null, begin, end, null, null); -2154 } -2155 -2156/** -2157 * Get the (events) history for the given project -2158 * -2159 * @param project name of the project - mandatory -2160 * @param begin date for the earlier events to retrieve - optional -2161 * @param end date for the latest events to retrieve - optional -2162 * @param max number of results to return - optional (default to 20) -2163 * @param offset the 0-indexed offset for the first result to return - optional (default to O) -2164 * @return a {@link RundeckHistory} instance - won't be null -2165 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -2166 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2167 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2168 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -2169 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) -2170 */ -2171publicRundeckHistory getHistory(String project, Date begin, Date end, Long max, Long offset) -2172throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -2173return getHistory(project, null, null, null, null, begin, end, max, offset); -2174 } -2175 -2176/** -2177 * Get the (events) history for the given project -2178 * -2179 * @param project name of the project - mandatory -2180 * @param jobId include only events matching the given job ID - optional -2181 * @param reportId include only events matching the given report ID - optional -2182 * @param user include only events created by the given user - optional -2183 * @param recent include only events matching the given period of time. Format : "XY", where X is an integer, and Y -2184 * is one of : "h" (hour), "d" (day), "w" (week), "m" (month), "y" (year). Example : "2w" (= last 2 -2185 * weeks), "5d" (= last 5 days), etc. Optional. -2186 * @param begin date for the earlier events to retrieve - optional -2187 * @param end date for the latest events to retrieve - optional -2188 * @param max number of results to return - optional (default to 20) -2189 * @param offset the 0-indexed offset for the first result to return - optional (default to O) -2190 * @return a {@link RundeckHistory} instance - won't be null -2191 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -2192 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2193 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2194 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -2195 */ -2196publicRundeckHistory getHistory(String project, String jobId, String reportId, String user, String recent, -2197 Date begin, Date end, Long max, Long offset) throws RundeckApiException, RundeckApiLoginException, -2198 RundeckApiTokenException, IllegalArgumentException { -2199 AssertUtil.notBlank(project, "project is mandatory to get the history !"); -2200returnnewApiCall(this).get(newApiPathBuilder("/history").param("project", project) -2201 .param("jobIdFilter", jobId) -2202 .param("reportIdFilter", reportId) -2203 .param("userFilter", user) -2204 .param("recentFilter", recent) -2205 .param("begin", begin) -2206 .param("end", end) -2207 .param("max", max) -2208 .param("offset", offset), -2209newHistoryParser("result/events")); -2210 } -2211 -2212/* -2213 * Nodes -2214 */ -2215 -2216/** -2217 * List all nodes (for all projects) -2218 * -2219 * @return a {@link List} of {@link RundeckNode} : might be empty, but won't be null -2220 * @throws RundeckApiException in case of error when calling the API -2221 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2222 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2223 */ -2224public List<RundeckNode> getNodes() throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException { -2225 List<RundeckNode> nodes = new ArrayList<RundeckNode>(); -2226for (RundeckProject project : getProjects()) { -2227 nodes.addAll(getNodes(project.getName())); -2228 } -2229return nodes; -2230 } -2231 -2232/** -2233 * List all nodes that belongs to the given project -2234 * -2235 * @param project name of the project - mandatory -2236 * @return a {@link List} of {@link RundeckNode} : might be empty, but won't be null -2237 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -2238 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2239 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2240 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -2241 * @see #getNodes(String, Properties) -2242 */ -2243public List<RundeckNode> getNodes(String project) throws RundeckApiException, RundeckApiLoginException, -2244 RundeckApiTokenException, IllegalArgumentException { -2245return getNodes(project, null); -2246 } -2247 -2248/** -2249 * List nodes that belongs to the given project -2250 * -2251 * @param project name of the project - mandatory -2252 * @param nodeFilters for filtering the nodes - optional. See {@link NodeFiltersBuilder} -2253 * @return a {@link List} of {@link RundeckNode} : might be empty, but won't be null -2254 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) -2255 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2256 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2257 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) -2258 */ -2259public List<RundeckNode> getNodes(String project, Properties nodeFilters) throws RundeckApiException, -2260 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { -2261 AssertUtil.notBlank(project, "project is mandatory to get all nodes !"); -2262returnnewApiCall(this).get(newApiPathBuilder("/resources").param("project", project) -2263 .nodeFilters(nodeFilters), -2264new ListParser<RundeckNode>(newNodeParser(), "project/node")); -2265 } -2266 -2267/** -2268 * Get the definition of a single node -2269 * -2270 * @param name of the node - mandatory -2271 * @param project name of the project - mandatory -2272 * @return a {@link RundeckNode} instance - won't be null -2273 * @throws RundeckApiException in case of error when calling the API (non-existent name or project with this name) -2274 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2275 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2276 * @throws IllegalArgumentException if the name or project is blank (null, empty or whitespace) -2277 */ -2278publicRundeckNode getNode(String name, String project) throws RundeckApiException, RundeckApiLoginException, -2279 RundeckApiTokenException, IllegalArgumentException { -2280 AssertUtil.notBlank(name, "the name of the node is mandatory to get a node !"); -2281 AssertUtil.notBlank(project, "project is mandatory to get a node !"); -2282returnnewApiCall(this).get(newApiPathBuilder("/resource/", name).param("project", project), -2283newNodeParser("project/node")); -2284 } -2285 -2286/* -2287 * System Info -2288 */ -2289 -2290/** -2291 * Get system informations about the RunDeck server -2292 * -2293 * @return a {@link RundeckSystemInfo} instance - won't be null -2294 * @throws RundeckApiException in case of error when calling the API -2295 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) -2296 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) -2297 */ -2298publicRundeckSystemInfo getSystemInfo() throws RundeckApiException, RundeckApiLoginException, -2299RundeckApiTokenException { -2300returnnewApiCall(this).get(newApiPathBuilder("/system/info"), newSystemInfoParser("result/system")); -2301 } -2302 -2303/** -2304 * @return the URL of the RunDeck instance ("http://localhost:4440", "http://rundeck.your-compagny.com/", etc) -2305 */ -2306public String getUrl() { -2307return url; -2308 } -2309 -2310/** -2311 * @return the auth-token used for authentication on the RunDeck instance (null if using login-based auth) -2312 */ -2313public String getToken() { -2314return token; -2315 } -2316 -2317/** -2318 * @return the login used for authentication on the RunDeck instance (null if using token-based auth) -2319 */ -2320public String getLogin() { -2321return login; -2322 } -2323 -2324/** -2325 * @return the password used for authentication on the RunDeck instance (null if using token-based auth) -2326 */ -2327public String getPassword() { -2328return password; -2329 } -2330 -2331 @Override -2332public String toString() { -2333 StringBuilder str = new StringBuilder(); -2334 str.append("RundeckClient ").append(API_VERSION); -2335 str.append(" [").append(url).append("] "); -2336if (token != null) { -2337 str.append("(token=").append(token).append(")"); -2338 } else { -2339 str.append("(credentials=").append(login).append("|").append(password).append(")"); -2340 } -2341return str.toString(); -2342 } -2343 -2344 @Override -2345publicint hashCode() { -2346finalint prime = 31; -2347int result = 1; -2348 result = prime * result + ((login == null) ? 0 : login.hashCode()); -2349 result = prime * result + ((password == null) ? 0 : password.hashCode()); -2350 result = prime * result + ((token == null) ? 0 : token.hashCode()); -2351 result = prime * result + ((url == null) ? 0 : url.hashCode()); -2352return result; -2353 } -2354 -2355 @Override -2356publicboolean equals(Object obj) { -2357if (this == obj) -2358returntrue; -2359if (obj == null) -2360return false; -2361if (getClass() != obj.getClass()) -2362return false; -2363RundeckClient other = (RundeckClient) obj; -2364if (login == null) { -2365if (other.login != null) -2366return false; -2367 } elseif (!login.equals(other.login)) -2368return false; -2369if (password == null) { -2370if (other.password != null) -2371return false; -2372 } elseif (!password.equals(other.password)) -2373return false; -2374if (token == null) { -2375if (other.token != null) +1190 +1191RundeckExecution execution = triggerAdhocCommand(project, command, nodeFilters, nodeThreadcount, nodeKeepgoing); +1192while (ExecutionStatus.RUNNING.equals(execution.getStatus())) { +1193try { +1194 Thread.sleep(poolingUnit.toMillis(poolingInterval)); +1195 } catch (InterruptedException e) { +1196break; +1197 } +1198 execution = getExecution(execution.getId()); +1199 } +1200return execution; +1201 } +1202 +1203/* +1204 * Ad-hoc scripts +1205 */ +1206 +1207/** +1208 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The +1209 * script will not be dispatched to nodes, but be executed on the RunDeck server. +1210 * +1211 * @param project name of the project - mandatory +1212 * @param scriptFilename filename of the script to be executed - mandatory +1213 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +1214 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1215 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1216 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1217 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1218 * @throws IOException if we failed to read the file +1219 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) +1220 * @see #runAdhocScript(String, String) +1221 */ +1222publicRundeckExecution triggerAdhocScript(String project, String scriptFilename) throws RundeckApiException, +1223 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +1224return triggerAdhocScript(project, scriptFilename, null); +1225 } +1226 +1227/** +1228 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The +1229 * script will not be dispatched to nodes, but be executed on the RunDeck server. +1230 * +1231 * @param project name of the project - mandatory +1232 * @param scriptFilename filename of the script to be executed - mandatory +1233 * @param options of the script - optional. See {@link OptionsBuilder}. +1234 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +1235 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1236 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1237 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1238 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1239 * @throws IOException if we failed to read the file +1240 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) +1241 * @see #runAdhocScript(String, String, Properties) +1242 */ +1243publicRundeckExecution triggerAdhocScript(String project, String scriptFilename, Properties options) +1244throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, +1245 IOException { +1246return triggerAdhocScript(project, scriptFilename, options, null); +1247 } +1248 +1249/** +1250 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The +1251 * script will be dispatched to nodes, accordingly to the nodeFilters parameter. +1252 * +1253 * @param project name of the project - mandatory +1254 * @param scriptFilename filename of the script to be executed - mandatory +1255 * @param options of the script - optional. See {@link OptionsBuilder}. +1256 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} +1257 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +1258 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1259 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1260 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1261 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1262 * @throws IOException if we failed to read the file +1263 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) +1264 * @see #runAdhocScript(String, String, Properties, Properties) +1265 */ +1266publicRundeckExecution triggerAdhocScript(String project, String scriptFilename, Properties options, +1267 Properties nodeFilters) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, +1268 IllegalArgumentException, IOException { +1269return triggerAdhocScript(project, scriptFilename, options, nodeFilters, null, null); +1270 } +1271 +1272/** +1273 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The +1274 * script will be dispatched to nodes, accordingly to the nodeFilters parameter. +1275 * +1276 * @param project name of the project - mandatory +1277 * @param scriptFilename filename of the script to be executed - mandatory +1278 * @param options of the script - optional. See {@link OptionsBuilder}. +1279 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} +1280 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional +1281 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional +1282 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +1283 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1284 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1285 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1286 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1287 * @throws IOException if we failed to read the file +1288 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) +1289 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) +1290 */ +1291publicRundeckExecution triggerAdhocScript(String project, String scriptFilename, Properties options, +1292 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, +1293 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +1294 AssertUtil.notBlank(scriptFilename, "scriptFilename is mandatory to trigger an ad-hoc script !"); +1295 FileInputStream stream = null; +1296try { +1297 stream = FileUtils.openInputStream(new File(scriptFilename)); +1298return triggerAdhocScript(project, stream, options, nodeFilters, nodeThreadcount, nodeKeepgoing); +1299 } finally { +1300 IOUtils.closeQuietly(stream); +1301 } +1302 } +1303 +1304/** +1305 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The +1306 * script will not be dispatched to nodes, but be executed on the RunDeck server. +1307 * +1308 * @param project name of the project - mandatory +1309 * @param script inputStream for reading the script to be executed - mandatory +1310 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +1311 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1312 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1313 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1314 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1315 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) +1316 * @see #runAdhocScript(String, InputStream) +1317 */ +1318publicRundeckExecution triggerAdhocScript(String project, InputStream script) throws RundeckApiException, +1319 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1320return triggerAdhocScript(project, script, null); +1321 } +1322 +1323/** +1324 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The +1325 * script will not be dispatched to nodes, but be executed on the RunDeck server. +1326 * +1327 * @param project name of the project - mandatory +1328 * @param script inputStream for reading the script to be executed - mandatory +1329 * @param options of the script - optional. See {@link OptionsBuilder}. +1330 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +1331 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1332 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1333 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1334 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1335 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) +1336 * @see #runAdhocScript(String, InputStream, Properties) +1337 */ +1338publicRundeckExecution triggerAdhocScript(String project, InputStream script, Properties options) +1339throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1340return triggerAdhocScript(project, script, options, null); +1341 } +1342 +1343/** +1344 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The +1345 * script will be dispatched to nodes, accordingly to the nodeFilters parameter. +1346 * +1347 * @param project name of the project - mandatory +1348 * @param script inputStream for reading the script to be executed - mandatory +1349 * @param options of the script - optional. See {@link OptionsBuilder}. +1350 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} +1351 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +1352 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1353 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1354 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1355 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1356 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) +1357 * @see #runAdhocScript(String, InputStream, Properties, Properties) +1358 */ +1359publicRundeckExecution triggerAdhocScript(String project, InputStream script, Properties options, +1360 Properties nodeFilters) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, +1361 IllegalArgumentException { +1362return triggerAdhocScript(project, script, options, nodeFilters, null, null); +1363 } +1364 +1365/** +1366 * Trigger the execution of an ad-hoc script, and return immediately (without waiting the end of the execution). The +1367 * script will be dispatched to nodes, accordingly to the nodeFilters parameter. +1368 * +1369 * @param project name of the project - mandatory +1370 * @param script inputStream for reading the script to be executed - mandatory +1371 * @param options of the script - optional. See {@link OptionsBuilder}. +1372 * @param nodeFilters for selecting nodes on which the command will be executed. See {@link NodeFiltersBuilder} +1373 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional +1374 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional +1375 * @return a {@link RundeckExecution} instance for the newly created (and running) execution - won't be null +1376 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1377 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1378 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1379 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1380 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) +1381 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) +1382 */ +1383publicRundeckExecution triggerAdhocScript(String project, InputStream script, Properties options, +1384 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, +1385 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1386 AssertUtil.notBlank(project, "project is mandatory to trigger an ad-hoc script !"); +1387 AssertUtil.notNull(script, "script is mandatory to trigger an ad-hoc script !"); +1388RundeckExecution execution = newApiCall(this).post(newApiPathBuilder("/run/script").param("project", project) +1389 .attach("scriptFile", +1390 script) +1391 .param("argString", +1392 ParametersUtil.generateArgString(options)) +1393 .param("nodeThreadcount", +1394 nodeThreadcount) +1395 .param("nodeKeepgoing", +1396 nodeKeepgoing) +1397 .nodeFilters(nodeFilters), +1398newExecutionParser("result/execution")); +1399// the first call just returns the ID of the execution, so we need another call to get a "real" execution +1400return getExecution(execution.getId()); +1401 } +1402 +1403/** +1404 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1405 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still +1406 * running. The script will not be dispatched to nodes, but be executed on the RunDeck server. +1407 * +1408 * @param project name of the project - mandatory +1409 * @param scriptFilename filename of the script to be executed - mandatory +1410 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1411 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1412 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1413 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1414 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1415 * @throws IOException if we failed to read the file +1416 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) +1417 * @see #triggerAdhocScript(String, String) +1418 */ +1419publicRundeckExecution runAdhocScript(String project, String scriptFilename) throws RundeckApiException, +1420 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +1421return runAdhocScript(project, scriptFilename, null); +1422 } +1423 +1424/** +1425 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1426 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is +1427 * finished (or aborted) or is still running. The script will not be dispatched to nodes, but be executed on the +1428 * RunDeck server. +1429 * +1430 * @param project name of the project - mandatory +1431 * @param scriptFilename filename of the script to be executed - mandatory +1432 * @param poolingInterval for checking the status of the execution. Must be > 0. +1433 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +1434 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1435 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1436 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1437 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1438 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1439 * @throws IOException if we failed to read the file +1440 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) +1441 * @see #triggerAdhocScript(String, String) +1442 */ +1443publicRundeckExecution runAdhocScript(String project, String scriptFilename, long poolingInterval, +1444 TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, +1445 IllegalArgumentException, IOException { +1446return runAdhocScript(project, scriptFilename, null, poolingInterval, poolingUnit); +1447 } +1448 +1449/** +1450 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1451 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still +1452 * running. The script will not be dispatched to nodes, but be executed on the RunDeck server. +1453 * +1454 * @param project name of the project - mandatory +1455 * @param scriptFilename filename of the script to be executed - mandatory +1456 * @param options of the script - optional. See {@link OptionsBuilder}. +1457 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1458 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1459 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1460 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1461 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1462 * @throws IOException if we failed to read the file +1463 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) +1464 * @see #triggerAdhocScript(String, String, Properties) +1465 */ +1466publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options) +1467throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, +1468 IOException { +1469return runAdhocScript(project, scriptFilename, options, null); +1470 } +1471 +1472/** +1473 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1474 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is +1475 * finished (or aborted) or is still running. The script will not be dispatched to nodes, but be executed on the +1476 * RunDeck server. +1477 * +1478 * @param project name of the project - mandatory +1479 * @param scriptFilename filename of the script to be executed - mandatory +1480 * @param options of the script - optional. See {@link OptionsBuilder}. +1481 * @param poolingInterval for checking the status of the execution. Must be > 0. +1482 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +1483 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1484 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1485 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1486 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1487 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1488 * @throws IOException if we failed to read the file +1489 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) +1490 * @see #triggerAdhocScript(String, String, Properties) +1491 */ +1492publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options, +1493long poolingInterval, TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, +1494 RundeckApiTokenException, IllegalArgumentException, IOException { +1495return runAdhocScript(project, scriptFilename, options, null, poolingInterval, poolingUnit); +1496 } +1497 +1498/** +1499 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1500 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still +1501 * running. The script will be dispatched to nodes, accordingly to the nodeFilters parameter. +1502 * +1503 * @param project name of the project - mandatory +1504 * @param scriptFilename filename of the script to be executed - mandatory +1505 * @param options of the script - optional. See {@link OptionsBuilder}. +1506 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} +1507 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1508 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1509 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1510 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1511 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1512 * @throws IOException if we failed to read the file +1513 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) +1514 * @see #triggerAdhocScript(String, String, Properties, Properties) +1515 */ +1516publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options, +1517 Properties nodeFilters) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, +1518 IllegalArgumentException, IOException { +1519return runAdhocScript(project, scriptFilename, options, nodeFilters, null, null); +1520 } +1521 +1522/** +1523 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1524 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is +1525 * finished (or aborted) or is still running. The script will be dispatched to nodes, accordingly to the nodeFilters +1526 * parameter. +1527 * +1528 * @param project name of the project - mandatory +1529 * @param scriptFilename filename of the script to be executed - mandatory +1530 * @param options of the script - optional. See {@link OptionsBuilder}. +1531 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} +1532 * @param poolingInterval for checking the status of the execution. Must be > 0. +1533 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +1534 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1535 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1536 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1537 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1538 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1539 * @throws IOException if we failed to read the file +1540 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) +1541 * @see #triggerAdhocScript(String, String, Properties, Properties) +1542 */ +1543publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options, +1544 Properties nodeFilters, long poolingInterval, TimeUnit poolingUnit) throws RundeckApiException, +1545 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +1546return runAdhocScript(project, scriptFilename, options, nodeFilters, null, null, poolingInterval, poolingUnit); +1547 } +1548 +1549/** +1550 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1551 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still +1552 * running. The script will be dispatched to nodes, accordingly to the nodeFilters parameter. +1553 * +1554 * @param project name of the project - mandatory +1555 * @param scriptFilename filename of the script to be executed - mandatory +1556 * @param options of the script - optional. See {@link OptionsBuilder}. +1557 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} +1558 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional +1559 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional +1560 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1561 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1562 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1563 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1564 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1565 * @throws IOException if we failed to read the file +1566 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) +1567 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) +1568 */ +1569publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options, +1570 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, +1571 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +1572return runAdhocScript(project, +1573 scriptFilename, +1574 options, +1575 nodeFilters, +1576 nodeThreadcount, +1577 nodeKeepgoing, +1578 DEFAULT_POOLING_INTERVAL, +1579 DEFAULT_POOLING_UNIT); +1580 } +1581 +1582/** +1583 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1584 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is +1585 * finished (or aborted) or is still running. The script will be dispatched to nodes, accordingly to the nodeFilters +1586 * parameter. +1587 * +1588 * @param project name of the project - mandatory +1589 * @param scriptFilename filename of the script to be executed - mandatory +1590 * @param options of the script - optional. See {@link OptionsBuilder}. +1591 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} +1592 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional +1593 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional +1594 * @param poolingInterval for checking the status of the execution. Must be > 0. +1595 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +1596 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1597 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1598 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1599 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1600 * @throws IllegalArgumentException if the project or scriptFilename is blank (null, empty or whitespace) +1601 * @throws IOException if we failed to read the file +1602 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) +1603 * @see #triggerAdhocScript(String, String, Properties, Properties, Integer, Boolean) +1604 */ +1605publicRundeckExecution runAdhocScript(String project, String scriptFilename, Properties options, +1606 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing, long poolingInterval, +1607 TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, +1608 IllegalArgumentException, IOException { +1609 AssertUtil.notBlank(scriptFilename, "scriptFilename is mandatory to run an ad-hoc script !"); +1610 FileInputStream stream = null; +1611try { +1612 stream = FileUtils.openInputStream(new File(scriptFilename)); +1613return runAdhocScript(project, +1614 stream, +1615 options, +1616 nodeFilters, +1617 nodeThreadcount, +1618 nodeKeepgoing, +1619 poolingInterval, +1620 poolingUnit); +1621 } finally { +1622 IOUtils.closeQuietly(stream); +1623 } +1624 } +1625 +1626/** +1627 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1628 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still +1629 * running. The script will not be dispatched to nodes, but be executed on the RunDeck server. +1630 * +1631 * @param project name of the project - mandatory +1632 * @param script inputStream for reading the script to be executed - mandatory +1633 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1634 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1635 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1636 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1637 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1638 * @throws IOException if we failed to read the file +1639 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) +1640 * @see #triggerAdhocScript(String, InputStream) +1641 */ +1642publicRundeckExecution runAdhocScript(String project, InputStream script) throws RundeckApiException, +1643 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +1644return runAdhocScript(project, script, null); +1645 } +1646 +1647/** +1648 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1649 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is +1650 * finished (or aborted) or is still running. The script will not be dispatched to nodes, but be executed on the +1651 * RunDeck server. +1652 * +1653 * @param project name of the project - mandatory +1654 * @param script inputStream for reading the script to be executed - mandatory +1655 * @param poolingInterval for checking the status of the execution. Must be > 0. +1656 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +1657 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1658 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1659 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1660 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1661 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1662 * @throws IOException if we failed to read the file +1663 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) +1664 * @see #triggerAdhocScript(String, InputStream) +1665 */ +1666publicRundeckExecution runAdhocScript(String project, InputStream script, long poolingInterval, +1667 TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, +1668 IllegalArgumentException, IOException { +1669return runAdhocScript(project, script, null, poolingInterval, poolingUnit); +1670 } +1671 +1672/** +1673 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1674 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still +1675 * running. The script will not be dispatched to nodes, but be executed on the RunDeck server. +1676 * +1677 * @param project name of the project - mandatory +1678 * @param script inputStream for reading the script to be executed - mandatory +1679 * @param options of the script - optional. See {@link OptionsBuilder}. +1680 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1681 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1682 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1683 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1684 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1685 * @throws IOException if we failed to read the file +1686 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) +1687 * @see #triggerAdhocScript(String, InputStream, Properties) +1688 */ +1689publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options) +1690throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, +1691 IOException { +1692return runAdhocScript(project, script, options, null); +1693 } +1694 +1695/** +1696 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1697 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is +1698 * finished (or aborted) or is still running. The script will not be dispatched to nodes, but be executed on the +1699 * RunDeck server. +1700 * +1701 * @param project name of the project - mandatory +1702 * @param script inputStream for reading the script to be executed - mandatory +1703 * @param options of the script - optional. See {@link OptionsBuilder}. +1704 * @param poolingInterval for checking the status of the execution. Must be > 0. +1705 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +1706 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1707 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1708 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1709 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1710 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1711 * @throws IOException if we failed to read the file +1712 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) +1713 * @see #triggerAdhocScript(String, InputStream, Properties) +1714 */ +1715publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options, +1716long poolingInterval, TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, +1717 RundeckApiTokenException, IllegalArgumentException, IOException { +1718return runAdhocScript(project, script, options, null, poolingInterval, poolingUnit); +1719 } +1720 +1721/** +1722 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1723 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still +1724 * running. The script will be dispatched to nodes, accordingly to the nodeFilters parameter. +1725 * +1726 * @param project name of the project - mandatory +1727 * @param script inputStream for reading the script to be executed - mandatory +1728 * @param options of the script - optional. See {@link OptionsBuilder}. +1729 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} +1730 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1731 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1732 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1733 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1734 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1735 * @throws IOException if we failed to read the file +1736 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) +1737 * @see #triggerAdhocScript(String, InputStream, Properties, Properties) +1738 */ +1739publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options, +1740 Properties nodeFilters) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, +1741 IllegalArgumentException, IOException { +1742return runAdhocScript(project, script, options, nodeFilters, null, null); +1743 } +1744 +1745/** +1746 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1747 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is +1748 * finished (or aborted) or is still running. The script will be dispatched to nodes, accordingly to the nodeFilters +1749 * parameter. +1750 * +1751 * @param project name of the project - mandatory +1752 * @param script inputStream for reading the script to be executed - mandatory +1753 * @param options of the script - optional. See {@link OptionsBuilder}. +1754 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} +1755 * @param poolingInterval for checking the status of the execution. Must be > 0. +1756 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +1757 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1758 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1759 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1760 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1761 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1762 * @throws IOException if we failed to read the file +1763 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) +1764 * @see #triggerAdhocScript(String, InputStream, Properties, Properties) +1765 */ +1766publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options, +1767 Properties nodeFilters, long poolingInterval, TimeUnit poolingUnit) throws RundeckApiException, +1768 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +1769return runAdhocScript(project, script, options, nodeFilters, null, null, poolingInterval, poolingUnit); +1770 } +1771 +1772/** +1773 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1774 * server at regular interval (every 5 seconds) to know if the execution is finished (or aborted) or is still +1775 * running. The script will be dispatched to nodes, accordingly to the nodeFilters parameter. +1776 * +1777 * @param project name of the project - mandatory +1778 * @param script inputStream for reading the script to be executed - mandatory +1779 * @param options of the script - optional. See {@link OptionsBuilder}. +1780 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} +1781 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional +1782 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional +1783 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1784 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1785 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1786 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1787 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1788 * @throws IOException if we failed to read the file +1789 * @see #runAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean, long, TimeUnit) +1790 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) +1791 */ +1792publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options, +1793 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing) throws RundeckApiException, +1794 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException, IOException { +1795return runAdhocScript(project, +1796 script, +1797 options, +1798 nodeFilters, +1799 nodeThreadcount, +1800 nodeKeepgoing, +1801 DEFAULT_POOLING_INTERVAL, +1802 DEFAULT_POOLING_UNIT); +1803 } +1804 +1805/** +1806 * Run an ad-hoc script, and wait until its execution is finished (or aborted) to return. We will poll the RunDeck +1807 * server at regular interval (configured by the poolingInterval/poolingUnit couple) to know if the execution is +1808 * finished (or aborted) or is still running. The script will be dispatched to nodes, accordingly to the nodeFilters +1809 * parameter. +1810 * +1811 * @param project name of the project - mandatory +1812 * @param script inputStream for reading the script to be executed - mandatory +1813 * @param options of the script - optional. See {@link OptionsBuilder}. +1814 * @param nodeFilters for selecting nodes on which the script will be executed. See {@link NodeFiltersBuilder} +1815 * @param nodeThreadcount thread count to use (for parallelizing when running on multiple nodes) - optional +1816 * @param nodeKeepgoing if true, continue executing on other nodes even if some fail - optional +1817 * @param poolingInterval for checking the status of the execution. Must be > 0. +1818 * @param poolingUnit unit (seconds, milli-seconds, ...) of the interval. Default to seconds. +1819 * @return a {@link RundeckExecution} instance for the (finished/aborted) execution - won't be null +1820 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1821 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1822 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1823 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) or the script is null +1824 * @throws IOException if we failed to read the file +1825 * @see #runAdhocScript(String, String, Properties, Properties, Integer, Boolean, long, TimeUnit) +1826 * @see #triggerAdhocScript(String, InputStream, Properties, Properties, Integer, Boolean) +1827 */ +1828publicRundeckExecution runAdhocScript(String project, InputStream script, Properties options, +1829 Properties nodeFilters, Integer nodeThreadcount, Boolean nodeKeepgoing, long poolingInterval, +1830 TimeUnit poolingUnit) throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, +1831 IllegalArgumentException { +1832if (poolingInterval <= 0) { +1833 poolingInterval = DEFAULT_POOLING_INTERVAL; +1834 poolingUnit = DEFAULT_POOLING_UNIT; +1835 } +1836if (poolingUnit == null) { +1837 poolingUnit = DEFAULT_POOLING_UNIT; +1838 } +1839 +1840RundeckExecution execution = triggerAdhocScript(project, +1841 script, +1842 options, +1843 nodeFilters, +1844 nodeThreadcount, +1845 nodeKeepgoing); +1846while (ExecutionStatus.RUNNING.equals(execution.getStatus())) { +1847try { +1848 Thread.sleep(poolingUnit.toMillis(poolingInterval)); +1849 } catch (InterruptedException e) { +1850break; +1851 } +1852 execution = getExecution(execution.getId()); +1853 } +1854return execution; +1855 } +1856 +1857/* +1858 * Executions +1859 */ +1860 +1861/** +1862 * Get all running executions (for all projects) +1863 * +1864 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null +1865 * @throws RundeckApiException in case of error when calling the API +1866 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1867 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1868 * @see #getRunningExecutions(String) +1869 */ +1870public List<RundeckExecution> getRunningExecutions() throws RundeckApiException, RundeckApiLoginException, +1871RundeckApiTokenException { +1872 List<RundeckExecution> executions = new ArrayList<RundeckExecution>(); +1873for (RundeckProject project : getProjects()) { +1874 executions.addAll(getRunningExecutions(project.getName())); +1875 } +1876return executions; +1877 } +1878 +1879/** +1880 * Get the running executions for the given project +1881 * +1882 * @param project name of the project - mandatory +1883 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null +1884 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +1885 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1886 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1887 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +1888 * @see #getRunningExecutions() +1889 */ +1890public List<RundeckExecution> getRunningExecutions(String project) throws RundeckApiException, +1891 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1892 AssertUtil.notBlank(project, "project is mandatory get all running executions !"); +1893returnnewApiCall(this).get(newApiPathBuilder("/executions/running").param("project", project), +1894new ListParser<RundeckExecution>(newExecutionParser(), +1895"result/executions/execution")); +1896 } +1897 +1898/** +1899 * Get the executions of the given job +1900 * +1901 * @param jobId identifier of the job - mandatory +1902 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null +1903 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +1904 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1905 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1906 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +1907 * @see #getJobExecutions(String, RundeckExecution.ExecutionStatus, Long, Long) +1908 */ +1909public List<RundeckExecution> getJobExecutions(String jobId) throws RundeckApiException, RundeckApiLoginException, +1910 RundeckApiTokenException, IllegalArgumentException { +1911return getJobExecutions(jobId, (ExecutionStatus) null); +1912 } +1913 +1914/** +1915 * Get the executions of the given job +1916 * +1917 * @param jobId identifier of the job - mandatory +1918 * @param status of the executions, see {@link ExecutionStatus} - optional (null for all) +1919 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null +1920 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +1921 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1922 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1923 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace), or the executionStatus is +1924 * invalid +1925 * @see #getJobExecutions(String, String, Long, Long) +1926 */ +1927public List<RundeckExecution> getJobExecutions(String jobId, String status) throws RundeckApiException, +1928 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1929return getJobExecutions(jobId, +1930 StringUtils.isBlank(status) ? null : ExecutionStatus.valueOf(StringUtils.upperCase(status))); +1931 } +1932 +1933/** +1934 * Get the executions of the given job +1935 * +1936 * @param jobId identifier of the job - mandatory +1937 * @param status of the executions, see {@link ExecutionStatus} - optional (null for all) +1938 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null +1939 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +1940 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1941 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1942 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +1943 * @see #getJobExecutions(String, RundeckExecution.ExecutionStatus, Long, Long) +1944 */ +1945public List<RundeckExecution> getJobExecutions(String jobId, ExecutionStatus status) throws RundeckApiException, +1946 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1947return getJobExecutions(jobId, status, null, null); +1948 } +1949 +1950/** +1951 * Get the executions of the given job +1952 * +1953 * @param jobId identifier of the job - mandatory +1954 * @param status of the executions, see {@link ExecutionStatus} - optional (null for all) +1955 * @param max number of results to return - optional (null for all) +1956 * @param offset the 0-indexed offset for the first result to return - optional +1957 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null +1958 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +1959 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1960 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1961 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace), or the executionStatus is +1962 * invalid +1963 * @see #getJobExecutions(String, RundeckExecution.ExecutionStatus, Long, Long) +1964 */ +1965public List<RundeckExecution> getJobExecutions(String jobId, String status, Long max, Long offset) +1966throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1967return getJobExecutions(jobId, +1968 StringUtils.isBlank(status) ? null : ExecutionStatus.valueOf(StringUtils.upperCase(status)), +1969 max, +1970 offset); +1971 } +1972 +1973/** +1974 * Get the executions of the given job +1975 * +1976 * @param jobId identifier of the job - mandatory +1977 * @param status of the executions, see {@link ExecutionStatus} - optional (null for all) +1978 * @param max number of results to return - optional (null for all) +1979 * @param offset the 0-indexed offset for the first result to return - optional +1980 * @return a {@link List} of {@link RundeckExecution} : might be empty, but won't be null +1981 * @throws RundeckApiException in case of error when calling the API (non-existent job with this ID) +1982 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +1983 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +1984 * @throws IllegalArgumentException if the jobId is blank (null, empty or whitespace) +1985 */ +1986public List<RundeckExecution> getJobExecutions(String jobId, ExecutionStatus status, Long max, Long offset) +1987throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +1988 AssertUtil.notBlank(jobId, "jobId is mandatory to get the executions of a job !"); +1989returnnewApiCall(this).get(newApiPathBuilder("/job/", jobId, "/executions").param("status", status) +1990 .param("max", max) +1991 .param("offset", offset), +1992new ListParser<RundeckExecution>(newExecutionParser(), +1993"result/executions/execution")); +1994 } +1995 +1996/** +1997 * Get a single execution, identified by the given ID +1998 * +1999 * @param executionId identifier of the execution - mandatory +2000 * @return a {@link RundeckExecution} instance - won't be null +2001 * @throws RundeckApiException in case of error when calling the API (non-existent execution with this ID) +2002 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2003 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2004 * @throws IllegalArgumentException if the executionId is null +2005 */ +2006publicRundeckExecution getExecution(Long executionId) throws RundeckApiException, RundeckApiLoginException, +2007 RundeckApiTokenException, IllegalArgumentException { +2008 AssertUtil.notNull(executionId, "executionId is mandatory to get the details of an execution !"); +2009returnnewApiCall(this).get(newApiPathBuilder("/execution/", executionId.toString()), +2010newExecutionParser("result/executions/execution")); +2011 } +2012 +2013/** +2014 * Abort an execution (identified by the given ID). The execution should be running... +2015 * +2016 * @param executionId identifier of the execution - mandatory +2017 * @return a {@link RundeckAbort} instance - won't be null +2018 * @throws RundeckApiException in case of error when calling the API (non-existent execution with this ID) +2019 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2020 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2021 * @throws IllegalArgumentException if the executionId is null +2022 */ +2023publicRundeckAbort abortExecution(Long executionId) throws RundeckApiException, RundeckApiLoginException, +2024 RundeckApiTokenException, IllegalArgumentException { +2025 AssertUtil.notNull(executionId, "executionId is mandatory to abort an execution !"); +2026returnnewApiCall(this).get(newApiPathBuilder("/execution/", executionId.toString(), "/abort"), +2027newAbortParser("result/abort")); +2028 } +2029 +2030/* +2031 * History +2032 */ +2033 +2034/** +2035 * Get the (events) history for the given project +2036 * +2037 * @param project name of the project - mandatory +2038 * @return a {@link RundeckHistory} instance - won't be null +2039 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +2040 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2041 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2042 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +2043 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) +2044 */ +2045publicRundeckHistory getHistory(String project) throws RundeckApiException, RundeckApiLoginException, +2046 RundeckApiTokenException, IllegalArgumentException { +2047return getHistory(project, null, null, null, null, null, null, null, null); +2048 } +2049 +2050/** +2051 * Get the (events) history for the given project +2052 * +2053 * @param project name of the project - mandatory +2054 * @param max number of results to return - optional (default to 20) +2055 * @param offset the 0-indexed offset for the first result to return - optional (default to O) +2056 * @return a {@link RundeckHistory} instance - won't be null +2057 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +2058 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2059 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2060 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +2061 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) +2062 */ +2063publicRundeckHistory getHistory(String project, Long max, Long offset) throws RundeckApiException, +2064 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +2065return getHistory(project, null, null, null, null, null, null, max, offset); +2066 } +2067 +2068/** +2069 * Get the (events) history for the given project +2070 * +2071 * @param project name of the project - mandatory +2072 * @param jobId include only events matching the given job ID - optional +2073 * @param reportId include only events matching the given report ID - optional +2074 * @param user include only events created by the given user - optional +2075 * @return a {@link RundeckHistory} instance - won't be null +2076 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +2077 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2078 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2079 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +2080 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) +2081 */ +2082publicRundeckHistory getHistory(String project, String jobId, String reportId, String user) +2083throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +2084return getHistory(project, jobId, reportId, user, null, null, null, null, null); +2085 } +2086 +2087/** +2088 * Get the (events) history for the given project +2089 * +2090 * @param project name of the project - mandatory +2091 * @param jobId include only events matching the given job ID - optional +2092 * @param reportId include only events matching the given report ID - optional +2093 * @param user include only events created by the given user - optional +2094 * @param max number of results to return - optional (default to 20) +2095 * @param offset the 0-indexed offset for the first result to return - optional (default to O) +2096 * @return a {@link RundeckHistory} instance - won't be null +2097 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +2098 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2099 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2100 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +2101 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) +2102 */ +2103publicRundeckHistory getHistory(String project, String jobId, String reportId, String user, Long max, Long offset) +2104throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +2105return getHistory(project, jobId, reportId, user, null, null, null, max, offset); +2106 } +2107 +2108/** +2109 * Get the (events) history for the given project +2110 * +2111 * @param project name of the project - mandatory +2112 * @param recent include only events matching the given period of time. Format : "XY", where X is an integer, and Y +2113 * is one of : "h" (hour), "d" (day), "w" (week), "m" (month), "y" (year). Example : "2w" (= last 2 +2114 * weeks), "5d" (= last 5 days), etc. Optional. +2115 * @return a {@link RundeckHistory} instance - won't be null +2116 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +2117 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2118 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2119 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +2120 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) +2121 */ +2122publicRundeckHistory getHistory(String project, String recent) throws RundeckApiException, +2123 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +2124return getHistory(project, null, null, null, recent, null, null, null, null); +2125 } +2126 +2127/** +2128 * Get the (events) history for the given project +2129 * +2130 * @param project name of the project - mandatory +2131 * @param recent include only events matching the given period of time. Format : "XY", where X is an integer, and Y +2132 * is one of : "h" (hour), "d" (day), "w" (week), "m" (month), "y" (year). Example : "2w" (= last 2 +2133 * weeks), "5d" (= last 5 days), etc. Optional. +2134 * @param max number of results to return - optional (default to 20) +2135 * @param offset the 0-indexed offset for the first result to return - optional (default to O) +2136 * @return a {@link RundeckHistory} instance - won't be null +2137 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +2138 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2139 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2140 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +2141 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) +2142 */ +2143publicRundeckHistory getHistory(String project, String recent, Long max, Long offset) throws RundeckApiException, +2144 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +2145return getHistory(project, null, null, null, recent, null, null, max, offset); +2146 } +2147 +2148/** +2149 * Get the (events) history for the given project +2150 * +2151 * @param project name of the project - mandatory +2152 * @param begin date for the earlier events to retrieve - optional +2153 * @param end date for the latest events to retrieve - optional +2154 * @return a {@link RundeckHistory} instance - won't be null +2155 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +2156 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2157 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2158 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +2159 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) +2160 */ +2161publicRundeckHistory getHistory(String project, Date begin, Date end) throws RundeckApiException, +2162 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +2163return getHistory(project, null, null, null, null, begin, end, null, null); +2164 } +2165 +2166/** +2167 * Get the (events) history for the given project +2168 * +2169 * @param project name of the project - mandatory +2170 * @param begin date for the earlier events to retrieve - optional +2171 * @param end date for the latest events to retrieve - optional +2172 * @param max number of results to return - optional (default to 20) +2173 * @param offset the 0-indexed offset for the first result to return - optional (default to O) +2174 * @return a {@link RundeckHistory} instance - won't be null +2175 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +2176 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2177 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2178 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +2179 * @see #getHistory(String, String, String, String, String, Date, Date, Long, Long) +2180 */ +2181publicRundeckHistory getHistory(String project, Date begin, Date end, Long max, Long offset) +2182throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +2183return getHistory(project, null, null, null, null, begin, end, max, offset); +2184 } +2185 +2186/** +2187 * Get the (events) history for the given project +2188 * +2189 * @param project name of the project - mandatory +2190 * @param jobId include only events matching the given job ID - optional +2191 * @param reportId include only events matching the given report ID - optional +2192 * @param user include only events created by the given user - optional +2193 * @param recent include only events matching the given period of time. Format : "XY", where X is an integer, and Y +2194 * is one of : "h" (hour), "d" (day), "w" (week), "m" (month), "y" (year). Example : "2w" (= last 2 +2195 * weeks), "5d" (= last 5 days), etc. Optional. +2196 * @param begin date for the earlier events to retrieve - optional +2197 * @param end date for the latest events to retrieve - optional +2198 * @param max number of results to return - optional (default to 20) +2199 * @param offset the 0-indexed offset for the first result to return - optional (default to O) +2200 * @return a {@link RundeckHistory} instance - won't be null +2201 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +2202 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2203 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2204 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +2205 */ +2206publicRundeckHistory getHistory(String project, String jobId, String reportId, String user, String recent, +2207 Date begin, Date end, Long max, Long offset) throws RundeckApiException, RundeckApiLoginException, +2208 RundeckApiTokenException, IllegalArgumentException { +2209 AssertUtil.notBlank(project, "project is mandatory to get the history !"); +2210returnnewApiCall(this).get(newApiPathBuilder("/history").param("project", project) +2211 .param("jobIdFilter", jobId) +2212 .param("reportIdFilter", reportId) +2213 .param("userFilter", user) +2214 .param("recentFilter", recent) +2215 .param("begin", begin) +2216 .param("end", end) +2217 .param("max", max) +2218 .param("offset", offset), +2219newHistoryParser("result/events")); +2220 } +2221 +2222/* +2223 * Nodes +2224 */ +2225 +2226/** +2227 * List all nodes (for all projects) +2228 * +2229 * @return a {@link List} of {@link RundeckNode} : might be empty, but won't be null +2230 * @throws RundeckApiException in case of error when calling the API +2231 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2232 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2233 */ +2234public List<RundeckNode> getNodes() throws RundeckApiException, RundeckApiLoginException, RundeckApiTokenException { +2235 List<RundeckNode> nodes = new ArrayList<RundeckNode>(); +2236for (RundeckProject project : getProjects()) { +2237 nodes.addAll(getNodes(project.getName())); +2238 } +2239return nodes; +2240 } +2241 +2242/** +2243 * List all nodes that belongs to the given project +2244 * +2245 * @param project name of the project - mandatory +2246 * @return a {@link List} of {@link RundeckNode} : might be empty, but won't be null +2247 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +2248 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2249 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2250 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +2251 * @see #getNodes(String, Properties) +2252 */ +2253public List<RundeckNode> getNodes(String project) throws RundeckApiException, RundeckApiLoginException, +2254 RundeckApiTokenException, IllegalArgumentException { +2255return getNodes(project, null); +2256 } +2257 +2258/** +2259 * List nodes that belongs to the given project +2260 * +2261 * @param project name of the project - mandatory +2262 * @param nodeFilters for filtering the nodes - optional. See {@link NodeFiltersBuilder} +2263 * @return a {@link List} of {@link RundeckNode} : might be empty, but won't be null +2264 * @throws RundeckApiException in case of error when calling the API (non-existent project with this name) +2265 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2266 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2267 * @throws IllegalArgumentException if the project is blank (null, empty or whitespace) +2268 */ +2269public List<RundeckNode> getNodes(String project, Properties nodeFilters) throws RundeckApiException, +2270 RundeckApiLoginException, RundeckApiTokenException, IllegalArgumentException { +2271 AssertUtil.notBlank(project, "project is mandatory to get all nodes !"); +2272returnnewApiCall(this).get(newApiPathBuilder("/resources").param("project", project) +2273 .nodeFilters(nodeFilters), +2274new ListParser<RundeckNode>(newNodeParser(), "project/node")); +2275 } +2276 +2277/** +2278 * Get the definition of a single node +2279 * +2280 * @param name of the node - mandatory +2281 * @param project name of the project - mandatory +2282 * @return a {@link RundeckNode} instance - won't be null +2283 * @throws RundeckApiException in case of error when calling the API (non-existent name or project with this name) +2284 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2285 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2286 * @throws IllegalArgumentException if the name or project is blank (null, empty or whitespace) +2287 */ +2288publicRundeckNode getNode(String name, String project) throws RundeckApiException, RundeckApiLoginException, +2289 RundeckApiTokenException, IllegalArgumentException { +2290 AssertUtil.notBlank(name, "the name of the node is mandatory to get a node !"); +2291 AssertUtil.notBlank(project, "project is mandatory to get a node !"); +2292returnnewApiCall(this).get(newApiPathBuilder("/resource/", name).param("project", project), +2293newNodeParser("project/node")); +2294 } +2295 +2296/* +2297 * System Info +2298 */ +2299 +2300/** +2301 * Get system informations about the RunDeck server +2302 * +2303 * @return a {@link RundeckSystemInfo} instance - won't be null +2304 * @throws RundeckApiException in case of error when calling the API +2305 * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) +2306 * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) +2307 */ +2308publicRundeckSystemInfo getSystemInfo() throws RundeckApiException, RundeckApiLoginException, +2309RundeckApiTokenException { +2310returnnewApiCall(this).get(newApiPathBuilder("/system/info"), newSystemInfoParser("result/system")); +2311 } +2312 +2313/** +2314 * @return the URL of the RunDeck instance ("http://localhost:4440", "http://rundeck.your-compagny.com/", etc) +2315 */ +2316public String getUrl() { +2317return url; +2318 } +2319 +2320/** +2321 * @return the auth-token used for authentication on the RunDeck instance (null if using login-based auth) +2322 */ +2323public String getToken() { +2324return token; +2325 } +2326 +2327/** +2328 * @return the login used for authentication on the RunDeck instance (null if using token-based auth) +2329 */ +2330public String getLogin() { +2331return login; +2332 } +2333 +2334/** +2335 * @return the password used for authentication on the RunDeck instance (null if using token-based auth) +2336 */ +2337public String getPassword() { +2338return password; +2339 } +2340 +2341 @Override +2342public String toString() { +2343 StringBuilder str = new StringBuilder(); +2344 str.append("RundeckClient ").append(API_VERSION); +2345 str.append(" [").append(url).append("] "); +2346if (token != null) { +2347 str.append("(token=").append(token).append(")"); +2348 } else { +2349 str.append("(credentials=").append(login).append("|").append(password).append(")"); +2350 } +2351return str.toString(); +2352 } +2353 +2354 @Override +2355publicint hashCode() { +2356finalint prime = 31; +2357int result = 1; +2358 result = prime * result + ((login == null) ? 0 : login.hashCode()); +2359 result = prime * result + ((password == null) ? 0 : password.hashCode()); +2360 result = prime * result + ((token == null) ? 0 : token.hashCode()); +2361 result = prime * result + ((url == null) ? 0 : url.hashCode()); +2362return result; +2363 } +2364 +2365 @Override +2366publicboolean equals(Object obj) { +2367if (this == obj) +2368returntrue; +2369if (obj == null) +2370return false; +2371if (getClass() != obj.getClass()) +2372return false; +2373RundeckClient other = (RundeckClient) obj; +2374if (login == null) { +2375if (other.login != null) 2376return false; -2377 } elseif (!token.equals(other.token)) +2377 } elseif (!login.equals(other.login)) 2378return false; -2379if (url == null) { -2380if (other.url != null) +2379if (password == null) { +2380if (other.password != null) 2381return false; -2382 } elseif (!url.equals(other.url)) +2382 } elseif (!password.equals(other.password)) 2383return false; -2384returntrue; -2385 } -2386 -2387 } +2384if (token == null) { +2385if (other.token != null) +2386return false; +2387 } elseif (!token.equals(other.token)) +2388return false; +2389if (url == null) { +2390if (other.url != null) +2391return false; +2392 } elseif (!url.equals(other.url)) +2393return false; +2394returntrue; +2395 } +2396 +2397 }
    diff --git a/xref/org/rundeck/api/domain/package-frame.html b/xref/org/rundeck/api/domain/package-frame.html index f969bea..fd61281 100644 --- a/xref/org/rundeck/api/domain/package-frame.html +++ b/xref/org/rundeck/api/domain/package-frame.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api.domain + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api.domain diff --git a/xref/org/rundeck/api/domain/package-summary.html b/xref/org/rundeck/api/domain/package-summary.html index b72597f..8af4062 100644 --- a/xref/org/rundeck/api/domain/package-summary.html +++ b/xref/org/rundeck/api/domain/package-summary.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api.domain + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api.domain diff --git a/xref/org/rundeck/api/package-frame.html b/xref/org/rundeck/api/package-frame.html index 3db2354..087405a 100644 --- a/xref/org/rundeck/api/package-frame.html +++ b/xref/org/rundeck/api/package-frame.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api diff --git a/xref/org/rundeck/api/package-summary.html b/xref/org/rundeck/api/package-summary.html index 5a5c7b6..64c021d 100644 --- a/xref/org/rundeck/api/package-summary.html +++ b/xref/org/rundeck/api/package-summary.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api diff --git a/xref/org/rundeck/api/parser/package-frame.html b/xref/org/rundeck/api/parser/package-frame.html index 62eaaf9..4069451 100644 --- a/xref/org/rundeck/api/parser/package-frame.html +++ b/xref/org/rundeck/api/parser/package-frame.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api.parser + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api.parser diff --git a/xref/org/rundeck/api/parser/package-summary.html b/xref/org/rundeck/api/parser/package-summary.html index 7ac9833..9ed6c8e 100644 --- a/xref/org/rundeck/api/parser/package-summary.html +++ b/xref/org/rundeck/api/parser/package-summary.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api.parser + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api.parser diff --git a/xref/org/rundeck/api/util/package-frame.html b/xref/org/rundeck/api/util/package-frame.html index f217c10..0af9dd2 100644 --- a/xref/org/rundeck/api/util/package-frame.html +++ b/xref/org/rundeck/api/util/package-frame.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api.util + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api.util diff --git a/xref/org/rundeck/api/util/package-summary.html b/xref/org/rundeck/api/util/package-summary.html index ac7e1fc..ec54e73 100644 --- a/xref/org/rundeck/api/util/package-summary.html +++ b/xref/org/rundeck/api/util/package-summary.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference Package org.rundeck.api.util + RunDeck API - Java Client 2.0 Reference Package org.rundeck.api.util diff --git a/xref/overview-frame.html b/xref/overview-frame.html index 48ef7d7..eb7fa6a 100644 --- a/xref/overview-frame.html +++ b/xref/overview-frame.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference + RunDeck API - Java Client 2.0 Reference diff --git a/xref/overview-summary.html b/xref/overview-summary.html index 7cd8e1a..3a244c8 100644 --- a/xref/overview-summary.html +++ b/xref/overview-summary.html @@ -3,7 +3,7 @@ - RunDeck API - Java Client 2.0-SNAPSHOT Reference + RunDeck API - Java Client 2.0 Reference @@ -24,7 +24,7 @@ -

    RunDeck API - Java Client 2.0-SNAPSHOT Reference

    +

    RunDeck API - Java Client 2.0 Reference