JCLOUDS-1457 - Add Clean Server operation to ServerApi.
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 cece134..9e7255c 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 4e40beb..867a528 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 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 f6ba5c5..1e05293 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 @@
@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 c8cd46d..553be1d 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 @@
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 0000000..bcfae07
--- /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