From 528fa0ae5aa18456fcd2c5c96dd9dccd9372d3b6 Mon Sep 17 00:00:00 2001 From: Richard Downer Date: Thu, 12 Jan 2012 14:31:03 +0200 Subject: [PATCH] Add GlobalHost[Async]Client.cancelHostMaintenance() --- .../features/GlobalHostAsyncClient.java | 12 ++++++++++++ .../cloudstack/features/GlobalHostClient.java | 8 ++++++++ .../features/GlobalHostClientExpectTest.java | 15 +++++++++++++++ .../resources/cancelhostmaintenanceresponse.json | 1 + 4 files changed, 36 insertions(+) create mode 100644 apis/cloudstack/src/test/resources/cancelhostmaintenanceresponse.json diff --git a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/GlobalHostAsyncClient.java b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/GlobalHostAsyncClient.java index 0041d934ae..70bfefcc8a 100644 --- a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/GlobalHostAsyncClient.java +++ b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/GlobalHostAsyncClient.java @@ -126,6 +126,18 @@ public interface GlobalHostAsyncClient { @Consumes(MediaType.APPLICATION_JSON) ListenableFuture prepareHostForMaintenance(@QueryParam("id") long hostId); + /** + * Cancels host maintenance. + * + * @param hostId the host ID + * @return a job reference number for tracking this asynchronous job. + */ + @GET + @QueryParams(keys = "command", values = "cancelHostMaintenance") + @SelectJson("jobid") + @Consumes(MediaType.APPLICATION_JSON) + ListenableFuture cancelHostMaintenance(@QueryParam("id") long hostId); + /** * @see GlobalHostClient#listClusters */ diff --git a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/GlobalHostClient.java b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/GlobalHostClient.java index 54417f3256..434470c8fc 100644 --- a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/GlobalHostClient.java +++ b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/features/GlobalHostClient.java @@ -98,6 +98,14 @@ public interface GlobalHostClient { */ Long prepareHostForMaintenance(long hostId); + /** + * Cancels host maintenance. + * + * @param hostId the host ID + * @return a job reference number for tracking this asynchronous job. + */ + Long cancelHostMaintenance(long hostId); + /** * Lists clusters * diff --git a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/GlobalHostClientExpectTest.java b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/GlobalHostClientExpectTest.java index a2e66866be..24dd923d82 100644 --- a/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/GlobalHostClientExpectTest.java +++ b/apis/cloudstack/src/test/java/org/jclouds/cloudstack/features/GlobalHostClientExpectTest.java @@ -180,6 +180,21 @@ public class GlobalHostClientExpectTest extends BaseCloudStackRestClientExpectTe assertEquals(actual, Long.valueOf(2036L)); } + @Test + public void testCancelHostMaintenanceWhenResponseIs2xx() { + HttpRequest request = HttpRequest.builder() + .method("GET") + .endpoint(URI.create("http://localhost:8080/client/api?response=json&command=cancelHostMaintenance&id=1&apiKey=identity&signature=9RduzuBoyRZKNTzAoVqUo9gRTfk%3D")) + .headers(ImmutableMultimap.builder().put("Accept", "application/json").build()) + .build(); + HttpResponse response = HttpResponse.builder() + .payload(payloadFromResource("/cancelhostmaintenanceresponse.json")) + .statusCode(200).build(); + + Long actual = requestSendsResponse(request, response).cancelHostMaintenance(1); + assertEquals(actual, Long.valueOf(2036L)); + } + @Test public void testListClustersWhenResponseIs2xx() { HttpRequest request = HttpRequest.builder() diff --git a/apis/cloudstack/src/test/resources/cancelhostmaintenanceresponse.json b/apis/cloudstack/src/test/resources/cancelhostmaintenanceresponse.json new file mode 100644 index 0000000000..5c3b0d0357 --- /dev/null +++ b/apis/cloudstack/src/test/resources/cancelhostmaintenanceresponse.json @@ -0,0 +1 @@ +{ "cancelhostmaintenanceresponse" : {"warning":"this test data is fabricated","jobid":2036,"id":2017} } \ No newline at end of file