From 6e899a76f1831ab2310860be500db220ac4efccb Mon Sep 17 00:00:00 2001 From: Trevor Flanagan Date: Thu, 18 Oct 2018 10:50:27 +0100 Subject: [PATCH] JCLOUDS-1457 - Add Clean Server operation to ServerApi. --- .../dimensiondata/cloudcontrol/domain/State.java | 2 +- .../dimensiondata/cloudcontrol/domain/Vlan.java | 2 ++ .../cloudcontrol/features/ServerApi.java | 12 ++++++++++++ .../cloudcontrol/features/ServerApiMockTest.java | 8 ++++++++ dimensiondata/src/test/resources/cleanServer.json | 9 +++++++++ 5 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 dimensiondata/src/test/resources/cleanServer.json diff --git a/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/domain/State.java b/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/domain/State.java index cece13452..9e7255c16 100644 --- a/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/domain/State.java +++ b/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/domain/State.java @@ -22,7 +22,7 @@ public enum State { - NORMAL, FAILED_ADD, FAILED_CHANGE, FAILED_DELETE, PENDING_DELETE, DELETED, UNRECOGNIZED, PENDING_CHANGE; + NORMAL, FAILED_ADD, FAILED_CHANGE, FAILED_DELETE, PENDING_DELETE, DELETED, UNRECOGNIZED, PENDING_CHANGE, PENDING_CLEAN, REQUIRES_SUPPORT; @Override public String toString() { diff --git a/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/domain/Vlan.java b/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/domain/Vlan.java index 4e40bebce..867a52884 100644 --- a/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/domain/Vlan.java +++ b/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/domain/Vlan.java @@ -17,6 +17,7 @@ package org.jclouds.dimensiondata.cloudcontrol.domain; import com.google.auto.value.AutoValue; +import org.jclouds.javax.annotation.Nullable; import org.jclouds.json.SerializedNames; import java.util.Date; @@ -35,6 +36,7 @@ public static Builder builder() { public abstract String name(); + @Nullable public abstract String description(); public abstract String datacenterId(); diff --git a/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/features/ServerApi.java b/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/features/ServerApi.java index f6ba5c5c7..1e052933f 100644 --- a/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/features/ServerApi.java +++ b/dimensiondata/src/main/java/org/jclouds/dimensiondata/cloudcontrol/features/ServerApi.java @@ -150,6 +150,18 @@ String cloneServer(@PayloadParam("id") String id, @PayloadParam("imageName") Str @MapBinder(BindToJsonPayload.class) void startServer(@PayloadParam("id") String id); + /** + * Operation for cleaning servers with FAILED_ADD state + * + * @see org.jclouds.dimensiondata.cloudcontrol.domain.State.FAILED_ADD + */ + @Named("server:cleanServer") + @POST + @Path("/cleanServer") + @Produces(MediaType.APPLICATION_JSON) + @MapBinder(BindToJsonPayload.class) + void cleanServer(@PayloadParam("id") String id); + @Named("server:shutdown") @POST @Path("/shutdownServer") diff --git a/dimensiondata/src/test/java/org/jclouds/dimensiondata/cloudcontrol/features/ServerApiMockTest.java b/dimensiondata/src/test/java/org/jclouds/dimensiondata/cloudcontrol/features/ServerApiMockTest.java index c8cd46d10..553be1dbb 100644 --- a/dimensiondata/src/test/java/org/jclouds/dimensiondata/cloudcontrol/features/ServerApiMockTest.java +++ b/dimensiondata/src/test/java/org/jclouds/dimensiondata/cloudcontrol/features/ServerApiMockTest.java @@ -194,6 +194,14 @@ public void testStartServer() throws Exception { assertBodyContains(recordedRequest, "{\"id\":\"12345\"}"); } + public void testCleanServer() throws Exception { + server.enqueue(jsonResponse("/cleanServer.json")); + serverApi().cleanServer("12345"); + final RecordedRequest recordedRequest = assertSent(POST, + "/caas/2.4/6ac1e746-b1ea-4da5-a24e-caf1a978789d/server/cleanServer"); + assertBodyContains(recordedRequest, "{\"id\":\"12345\"}"); + } + private ServerApi serverApi() { return api.getServerApi(); } diff --git a/dimensiondata/src/test/resources/cleanServer.json b/dimensiondata/src/test/resources/cleanServer.json new file mode 100644 index 000000000..bcfae0794 --- /dev/null +++ b/dimensiondata/src/test/resources/cleanServer.json @@ -0,0 +1,9 @@ +{ + "operation": "CLEAN_SERVER", + "responseCode": "IN_PROGRESS", + "message": "Request to Clean Server has been accepted. Please use appropriate Get or List API for status.", + "info": [], + "warning": [], + "error": [], + "requestId": "na9_20160321T074626030-0400_7e9fffe7-190b-46f2-9107-9d52fe57d0ad" +} \ No newline at end of file