From e092ccdb1374df19882d1c4b892afbb0112cff3a Mon Sep 17 00:00:00 2001 From: Greg Schueler Date: Thu, 6 Nov 2014 09:48:55 -0800 Subject: [PATCH] Add delete single execution --- .../java/org/rundeck/api/RundeckClient.java | 17 +++++++++ .../org/rundeck/api/RundeckClientTest.java | 36 +++++++++++++++++++ .../tapes/delete_execution_failure.yaml | 21 +++++++++++ .../tapes/delete_execution_success.yaml | 19 ++++++++++ 4 files changed, 93 insertions(+) create mode 100644 src/test/resources/betamax/tapes/delete_execution_failure.yaml create mode 100644 src/test/resources/betamax/tapes/delete_execution_success.yaml diff --git a/src/main/java/org/rundeck/api/RundeckClient.java b/src/main/java/org/rundeck/api/RundeckClient.java index e68dd10..7811807 100644 --- a/src/main/java/org/rundeck/api/RundeckClient.java +++ b/src/main/java/org/rundeck/api/RundeckClient.java @@ -1672,6 +1672,23 @@ public class RundeckClient implements Serializable { ); } + /** + * Delete a single execution, identified by the given ID + * + * @param executionId identifier for the execution - mandatory + * @throws RundeckApiException in case of error when calling the API (non-existent execution with this ID) + * @throws RundeckApiLoginException if the login fails (in case of login-based authentication) + * @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication) + * @throws IllegalArgumentException if the executionId is null + */ + public void deleteExecution(final Long executionId) + throws RundeckApiException, RundeckApiLoginException, + RundeckApiTokenException, IllegalArgumentException + { + AssertUtil.notNull(executionId, "executionId is mandatory to abort an execution !"); + new ApiCall(this).delete(new ApiPathBuilder("/execution/", executionId.toString())); + } + /* * History */ diff --git a/src/test/java/org/rundeck/api/RundeckClientTest.java b/src/test/java/org/rundeck/api/RundeckClientTest.java index 27fa3eb..e72aeb9 100644 --- a/src/test/java/org/rundeck/api/RundeckClientTest.java +++ b/src/test/java/org/rundeck/api/RundeckClientTest.java @@ -1572,6 +1572,42 @@ public class RundeckClientTest { response.getFailures().get(1).getMessage() ); } + /** + * delete single execution success + */ + @Test + @Betamax(tape = "delete_execution_success", mode = TapeMode.READ_ONLY) + public void deleteExecutionSuccess() throws Exception { + final RundeckClient client = createClient(TEST_TOKEN_8, 12); + client.deleteExecution(643L); + } + /** + * delete single execution failure (does not exist) + */ + @Test + @Betamax(tape = "delete_execution_failure", mode = TapeMode.READ_ONLY) + public void deleteExecutionFailure() throws Exception { + final RundeckClient client = createClient(TEST_TOKEN_8, 12); + try { + client.deleteExecution(640L); + Assert.fail(); + } catch (RundeckApiException.RundeckApiHttpStatusException e) { + Assert.assertEquals(404, e.getStatusCode()); + } + } + /** + * delete single execution null input + */ + @Test + public void deleteExecutionNullInput() throws Exception { + final RundeckClient client = createClient(TEST_TOKEN_8, 12); + try { + client.deleteExecution(null); + Assert.fail(); + } catch (IllegalArgumentException e) { + + } + } @Before public void setUp() throws Exception { // not that you can put whatever here, because we don't actually connect to the RunDeck instance diff --git a/src/test/resources/betamax/tapes/delete_execution_failure.yaml b/src/test/resources/betamax/tapes/delete_execution_failure.yaml new file mode 100644 index 0000000..fa26b88 --- /dev/null +++ b/src/test/resources/betamax/tapes/delete_execution_failure.yaml @@ -0,0 +1,21 @@ +!tape +name: delete_execution_failure +interactions: +- recorded: 2014-11-06T17:45:47.952Z + request: + method: DELETE + uri: http://rundeck.local:4440/api/12/execution/640 + headers: + Host: rundeck.local:4440 + Proxy-Connection: Keep-Alive + User-Agent: RunDeck API Java Client 12 + X-RunDeck-Auth-Token: GG7uj1y6UGahOs7QlmeN2sIwz1Y2j7zI + response: + status: 404 + headers: + Content-Type: text/xml;charset=UTF-8 + Expires: Thu, 01 Jan 1970 00:00:00 GMT + Server: Jetty(7.6.0.v20120127) + Set-Cookie: JSESSIONID=1eynpbisggwsy18ax352yya8k0;Path=/ + X-Rundeck-API-Version: '12' + body: "\n \n Execution ID does not exist: 640\n \n" diff --git a/src/test/resources/betamax/tapes/delete_execution_success.yaml b/src/test/resources/betamax/tapes/delete_execution_success.yaml new file mode 100644 index 0000000..3c2555a --- /dev/null +++ b/src/test/resources/betamax/tapes/delete_execution_success.yaml @@ -0,0 +1,19 @@ +!tape +name: delete_execution_success +interactions: +- recorded: 2014-11-06T17:45:47.749Z + request: + method: DELETE + uri: http://rundeck.local:4440/api/12/execution/643 + headers: + Host: rundeck.local:4440 + Proxy-Connection: Keep-Alive + User-Agent: RunDeck API Java Client 12 + X-RunDeck-Auth-Token: GG7uj1y6UGahOs7QlmeN2sIwz1Y2j7zI + response: + status: 204 + headers: + Content-Type: text/html;charset=UTF-8 + Expires: Thu, 01 Jan 1970 00:00:00 GMT + Server: Jetty(7.6.0.v20120127) + Set-Cookie: JSESSIONID=1hlysemt7deir1j9r7l6ildg5x;Path=/