Repository: jclouds-labs Updated Branches: refs/heads/master 05a5eee84 -> bb9dfbafb
SSH Keys for create-volume request Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/bb9dfbaf Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/bb9dfbaf Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/bb9dfbaf Branch: refs/heads/master Commit: bb9dfbafb5b1d527ce0e7cd2b5ef9341731d1a69 Parents: 05a5eee Author: mirza-spc <[email protected]> Authored: Mon Mar 7 16:12:16 2016 +0100 Committer: Ignasi Barrera <[email protected]> Committed: Tue Mar 22 12:33:41 2016 +0100 ---------------------------------------------------------------------- .../rest/ProfitBricksApiMetadata.java | 2 +- .../rest/ProfitBricksProviderMetadata.java | 2 +- .../binder/BaseProfitBricksRequestBinder.java | 26 +++++++---- .../binder/image/UpdateImageRequestBinder.java | 42 ++++++++++-------- .../binder/server/AttachCdromRequestBinder.java | 16 ++++--- .../server/AttachVolumeRequestBinder.java | 16 ++++--- .../server/CreateServerRequestBinder.java | 20 +++++---- .../server/UpdateServerRequestBinder.java | 28 ++++++------ .../snapshot/UpdateSnapshotRequestBinder.java | 37 ++++++++-------- .../volume/CreateSnapshotRequestBinder.java | 21 +++++---- .../volume/CreateVolumeRequestBinder.java | 23 ++++++---- .../volume/RestoreSnapshotRequestBinder.java | 21 +++++---- .../volume/UpdateVolumeRequestBinder.java | 20 +++++---- .../profitbricks/rest/domain/Location.java | 6 +-- .../profitbricks/rest/domain/Volume.java | 17 +++++--- .../profitbricks/rest/domain/VolumeType.java | 28 ++++++++++++ .../rest/binder/BinderTestBase.java | 46 ++++++++++++++++++++ .../image/UpdateImageRequestBinderTest.java | 13 +++--- .../server/AttachCdromRequestBinderTest.java | 11 ++--- .../server/AttachVolumeRequestBinderTest.java | 9 ++-- .../server/CreateServerRequestBinderTest.java | 11 ++--- .../server/UpdateServerRequestBinderTest.java | 10 ++--- .../UpdateSnapshotRequestBinderTest.java | 7 +-- .../volume/CreateSnapshotRequestBinderTest.java | 11 ++--- .../volume/CreateVolumeRequestBinderTest.java | 12 ++--- .../RestoreSnapshotRequestBinderTest.java | 11 ++--- .../volume/UpdateVolumeRequestBinderTest.java | 9 ++-- .../rest/features/ServerApiMockTest.java | 8 ++-- .../rest/features/VolumeApiLiveTest.java | 29 +++++++++++- .../rest/features/VolumeApiMockTest.java | 41 ++++++++++++++--- .../rest/internal/BaseProfitBricksLiveTest.java | 2 + 31 files changed, 346 insertions(+), 209 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/ProfitBricksApiMetadata.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/ProfitBricksApiMetadata.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/ProfitBricksApiMetadata.java index e55d944..f5ac5e1 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/ProfitBricksApiMetadata.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/ProfitBricksApiMetadata.java @@ -53,7 +53,7 @@ public class ProfitBricksApiMetadata extends BaseHttpApiMetadata<ProfitBricksApi .identityName("API Username") .credentialName("API Password") .documentation(URI.create("https://devops.profitbricks.com/api/rest/")) - .defaultEndpoint("https://api.profitbricks.com/rest/") + .defaultEndpoint("https://api.profitbricks.com/rest/v2/") .defaultProperties(ProfitBricksApiMetadata.defaultProperties()) .defaultModules(ImmutableSet.<Class<? extends Module>>builder() .add(OkHttpCommandExecutorServiceModule.class) http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/ProfitBricksProviderMetadata.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/ProfitBricksProviderMetadata.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/ProfitBricksProviderMetadata.java index feb31c9..133e7f6 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/ProfitBricksProviderMetadata.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/ProfitBricksProviderMetadata.java @@ -88,7 +88,7 @@ public class ProfitBricksProviderMetadata extends BaseProviderMetadata { .homepage(URI.create("https://www.profitbricks.com/")) .console(URI.create("https://my.profitbricks.com/dashboard/dcdr2")) .iso3166Codes("DE-FKB", "DE-FRA", "US-LAS", "US-LASDEV") - .endpoint("https://api.profitbricks.com/rest") + .endpoint("https://api.profitbricks.com/rest/v2/") .defaultProperties(ProfitBricksProviderMetadata.defaultProperties()); } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/BaseProfitBricksRequestBinder.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/BaseProfitBricksRequestBinder.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/BaseProfitBricksRequestBinder.java index 1d15bd9..dae21b9 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/BaseProfitBricksRequestBinder.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/BaseProfitBricksRequestBinder.java @@ -16,32 +16,32 @@ */ package org.apache.jclouds.profitbricks.rest.binder; -import static com.google.common.base.Preconditions.checkNotNull; - import java.util.Map; - import org.jclouds.http.HttpRequest; import org.jclouds.rest.MapBinder; - import com.google.common.base.Strings; import com.google.inject.Inject; import java.util.HashMap; - +import org.jclouds.json.Json; import org.jclouds.io.MutableContentMetadata; import org.jclouds.io.payloads.BaseMutableContentMetadata; -import org.jclouds.json.Json; +import java.net.URI; +import com.google.common.base.Supplier; +import static com.google.common.base.Preconditions.checkNotNull; public abstract class BaseProfitBricksRequestBinder<T> implements MapBinder { + protected final Supplier<URI> endpointSupplier; protected final String paramName; - protected final Map<String, Object> requestBuilder; + protected final Map<String, Object> formMap; protected final Json jsonBinder; @Inject - protected BaseProfitBricksRequestBinder(String paramName, Json jsonBinder) { + protected BaseProfitBricksRequestBinder(String paramName, Json jsonBinder, Supplier<URI> endpointSupplier) { this.paramName = checkNotNull(paramName, "Initialize 'paramName' in constructor"); this.jsonBinder = jsonBinder; - this.requestBuilder = new HashMap<String, Object>(); + this.formMap = new HashMap<String, Object>(); + this.endpointSupplier = endpointSupplier; } @Override @@ -78,4 +78,12 @@ public abstract class BaseProfitBricksRequestBinder<T> implements MapBinder { fromRequest.getPayload().setContentMetadata(metadata); return fromRequest; } + + protected <R extends HttpRequest> R genRequest(String path, R fromRequest) { + R request = (R) fromRequest.toBuilder() + .replacePath(endpointSupplier.get().getPath() + path) + .build(); + + return request; + } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/image/UpdateImageRequestBinder.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/image/UpdateImageRequestBinder.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/image/UpdateImageRequestBinder.java index 9a5e73e..7fa4998 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/image/UpdateImageRequestBinder.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/image/UpdateImageRequestBinder.java @@ -16,20 +16,23 @@ */ package org.apache.jclouds.profitbricks.rest.binder.image; -import static com.google.common.base.Preconditions.checkNotNull; import com.google.inject.Inject; import org.apache.jclouds.profitbricks.rest.binder.BaseProfitBricksRequestBinder; import org.apache.jclouds.profitbricks.rest.domain.Image; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; +import com.google.common.base.Supplier; +import java.net.URI; +import org.jclouds.location.Provider; +import static com.google.common.base.Preconditions.checkNotNull; public class UpdateImageRequestBinder extends BaseProfitBricksRequestBinder<Image.Request.UpdatePayload> { private String imageId; @Inject - UpdateImageRequestBinder(Json jsonBinder) { - super("image", jsonBinder); + UpdateImageRequestBinder(Json jsonBinder, @Provider Supplier<URI> endpointSupplier) { + super("image", jsonBinder, endpointSupplier); } @Override @@ -41,51 +44,52 @@ public class UpdateImageRequestBinder extends BaseProfitBricksRequestBinder<Imag imageId = payload.id(); if (payload.name() != null) - requestBuilder.put("name", payload.name()); + formMap.put("name", payload.name()); if (payload.description() != null) - requestBuilder.put("description", payload.description()); + formMap.put("description", payload.description()); if (payload.licenceType() != null) - requestBuilder.put("licenceType", payload.licenceType()); + formMap.put("licenceType", payload.licenceType()); if (payload.cpuHotPlug() != null) - requestBuilder.put("cpuHotPlug", payload.cpuHotPlug()); + formMap.put("cpuHotPlug", payload.cpuHotPlug()); if (payload.cpuHotUnplug() != null) - requestBuilder.put("cpuHotUnplug", payload.cpuHotUnplug()); + formMap.put("cpuHotUnplug", payload.cpuHotUnplug()); if (payload.ramHotPlug() != null) - requestBuilder.put("ramHotPlug", payload.ramHotPlug()); + formMap.put("ramHotPlug", payload.ramHotPlug()); if (payload.ramHotUnplug() != null) - requestBuilder.put("ramHotUnplug", payload.ramHotUnplug()); + formMap.put("ramHotUnplug", payload.ramHotUnplug()); if (payload.nicHotPlug() != null) - requestBuilder.put("nicHotPlug", payload.nicHotPlug()); + formMap.put("nicHotPlug", payload.nicHotPlug()); if (payload.nicHotUnplug() != null) - requestBuilder.put("nicHotUnplug", payload.nicHotUnplug()); + formMap.put("nicHotUnplug", payload.nicHotUnplug()); if (payload.discVirtioHotPlug() != null) - requestBuilder.put("discVirtioHotPlug", payload.discVirtioHotPlug()); + formMap.put("discVirtioHotPlug", payload.discVirtioHotPlug()); if (payload.discVirtioHotUnplug() != null) - requestBuilder.put("discVirtioHotUnplug", payload.discVirtioHotUnplug()); + formMap.put("discVirtioHotUnplug", payload.discVirtioHotUnplug()); if (payload.discScsiHotPlug() != null) - requestBuilder.put("discScsiHotPlug", payload.discScsiHotPlug()); + formMap.put("discScsiHotPlug", payload.discScsiHotPlug()); if (payload.discScsiHotUnplug() != null) - requestBuilder.put("discScsiHotUnplug", payload.discScsiHotUnplug()); + formMap.put("discScsiHotUnplug", payload.discScsiHotUnplug()); - return jsonBinder.toJson(requestBuilder); + return jsonBinder.toJson(formMap); } @Override protected <R extends HttpRequest> R createRequest(R fromRequest, String payload) { - R request = (R) fromRequest.toBuilder().replacePath(String.format("/rest/images/%s", imageId)).build(); - return super.createRequest(request, payload); + return super.createRequest(genRequest(String.format("images/%s", imageId), fromRequest), payload); } + + } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachCdromRequestBinder.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachCdromRequestBinder.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachCdromRequestBinder.java index 9cf2132..8315cce 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachCdromRequestBinder.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachCdromRequestBinder.java @@ -21,6 +21,9 @@ import org.apache.jclouds.profitbricks.rest.binder.BaseProfitBricksRequestBinder import org.apache.jclouds.profitbricks.rest.domain.Server; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; +import com.google.common.base.Supplier; +import java.net.URI; +import org.jclouds.location.Provider; import static com.google.common.base.Preconditions.checkNotNull; public class AttachCdromRequestBinder extends BaseProfitBricksRequestBinder<Server.Request.AttachCdromPayload> { @@ -29,8 +32,8 @@ public class AttachCdromRequestBinder extends BaseProfitBricksRequestBinder<Serv String serverId; @Inject - AttachCdromRequestBinder(Json jsonBinder) { - super("cdrom", jsonBinder); + AttachCdromRequestBinder(Json jsonBinder, @Provider Supplier<URI> endpointSupplier) { + super("cdrom", jsonBinder, endpointSupplier); } @Override @@ -45,14 +48,13 @@ public class AttachCdromRequestBinder extends BaseProfitBricksRequestBinder<Serv dataCenterId = payload.dataCenterId(); serverId = payload.serverId(); - requestBuilder.put("id", payload.imageId()); - return jsonBinder.toJson(requestBuilder); + formMap.put("id", payload.imageId()); + return jsonBinder.toJson(formMap); } - + @Override protected <R extends HttpRequest> R createRequest(R fromRequest, String payload) { - R request = (R) fromRequest.toBuilder().replacePath(String.format("/rest/datacenters/%s/servers/%s/cdroms", dataCenterId, serverId)).build(); - return super.createRequest(request, payload); + return super.createRequest(genRequest(String.format("datacenters/%s/servers/%s/cdroms", dataCenterId, serverId), fromRequest), payload); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachVolumeRequestBinder.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachVolumeRequestBinder.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachVolumeRequestBinder.java index 37516f4..b4178f4 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachVolumeRequestBinder.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachVolumeRequestBinder.java @@ -21,6 +21,9 @@ import org.apache.jclouds.profitbricks.rest.binder.BaseProfitBricksRequestBinder import org.apache.jclouds.profitbricks.rest.domain.Server; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; +import com.google.common.base.Supplier; +import java.net.URI; +import org.jclouds.location.Provider; import static com.google.common.base.Preconditions.checkNotNull; public class AttachVolumeRequestBinder extends BaseProfitBricksRequestBinder<Server.Request.AttachVolumePayload> { @@ -29,8 +32,8 @@ public class AttachVolumeRequestBinder extends BaseProfitBricksRequestBinder<Ser String serverId; @Inject - AttachVolumeRequestBinder(Json jsonBinder) { - super("volume", jsonBinder); + AttachVolumeRequestBinder(Json jsonBinder, @Provider Supplier<URI> endpointSupplier) { + super("volume", jsonBinder, endpointSupplier); } @Override @@ -45,14 +48,13 @@ public class AttachVolumeRequestBinder extends BaseProfitBricksRequestBinder<Ser dataCenterId = payload.dataCenterId(); serverId = payload.serverId(); - requestBuilder.put("id", payload.volumeId()); - return jsonBinder.toJson(requestBuilder); + formMap.put("id", payload.volumeId()); + return jsonBinder.toJson(formMap); } - + @Override protected <R extends HttpRequest> R createRequest(R fromRequest, String payload) { - R request = (R) fromRequest.toBuilder().replacePath(String.format("/rest/datacenters/%s/servers/%s/volumes", dataCenterId, serverId)).build(); - return super.createRequest(request, payload); + return super.createRequest(genRequest(String.format("datacenters/%s/servers/%s/volumes", dataCenterId, serverId), fromRequest), payload); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/CreateServerRequestBinder.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/CreateServerRequestBinder.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/CreateServerRequestBinder.java index 9ff4448..d7a2a97 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/CreateServerRequestBinder.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/CreateServerRequestBinder.java @@ -16,7 +16,6 @@ */ package org.apache.jclouds.profitbricks.rest.binder.server; -import static com.google.common.base.Preconditions.checkNotNull; import com.google.inject.Inject; import java.util.HashMap; import java.util.Map; @@ -24,14 +23,18 @@ import org.apache.jclouds.profitbricks.rest.binder.BaseProfitBricksRequestBinder import org.apache.jclouds.profitbricks.rest.domain.Server; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; +import com.google.common.base.Supplier; +import java.net.URI; +import org.jclouds.location.Provider; +import static com.google.common.base.Preconditions.checkNotNull; public class CreateServerRequestBinder extends BaseProfitBricksRequestBinder<Server.Request.CreatePayload> { String dataCenterId; @Inject - CreateServerRequestBinder(Json jsonBinder) { - super("server", jsonBinder); + CreateServerRequestBinder(Json jsonBinder, @Provider Supplier<URI> endpointSupplier) { + super("server", jsonBinder, endpointSupplier); } @Override @@ -58,7 +61,7 @@ public class CreateServerRequestBinder extends BaseProfitBricksRequestBinder<Ser else if (payload.bootCdrom() != null) properties.put("bootCdrom", payload.bootCdrom()); - requestBuilder.put("properties", properties); + formMap.put("properties", properties); Server.Entities entities = payload.entities(); @@ -72,16 +75,15 @@ public class CreateServerRequestBinder extends BaseProfitBricksRequestBinder<Ser if (entities.nics() != null) entitiesParams.put("nics", entities.nics()); - requestBuilder.put("entities", entitiesParams); + formMap.put("entities", entitiesParams); } - return jsonBinder.toJson(requestBuilder); + return jsonBinder.toJson(formMap); } - + @Override protected <R extends HttpRequest> R createRequest(R fromRequest, String payload) { - R request = (R) fromRequest.toBuilder().replacePath(String.format("/rest/datacenters/%s/servers", dataCenterId)).build(); - return super.createRequest(request, payload); + return super.createRequest(genRequest(String.format("datacenters/%s/servers", dataCenterId), fromRequest), payload); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/UpdateServerRequestBinder.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/UpdateServerRequestBinder.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/UpdateServerRequestBinder.java index ca1f2f0..61ebf81 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/UpdateServerRequestBinder.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/server/UpdateServerRequestBinder.java @@ -16,12 +16,15 @@ */ package org.apache.jclouds.profitbricks.rest.binder.server; -import static com.google.common.base.Preconditions.checkNotNull; import com.google.inject.Inject; import org.apache.jclouds.profitbricks.rest.binder.BaseProfitBricksRequestBinder; import org.apache.jclouds.profitbricks.rest.domain.Server; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; +import com.google.common.base.Supplier; +import java.net.URI; +import org.jclouds.location.Provider; +import static com.google.common.base.Preconditions.checkNotNull; public class UpdateServerRequestBinder extends BaseProfitBricksRequestBinder<Server.Request.UpdatePayload> { @@ -29,8 +32,8 @@ public class UpdateServerRequestBinder extends BaseProfitBricksRequestBinder<Ser String serverId; @Inject - UpdateServerRequestBinder(Json jsonBinder) { - super("server", jsonBinder); + UpdateServerRequestBinder(Json jsonBinder, @Provider Supplier<URI> endpointSupplier) { + super("server", jsonBinder, endpointSupplier); } @Override @@ -42,28 +45,27 @@ public class UpdateServerRequestBinder extends BaseProfitBricksRequestBinder<Ser dataCenterId = payload.dataCenterId(); serverId = payload.id(); - requestBuilder.put("name", payload.name()); - requestBuilder.put("ram", payload.ram()); - requestBuilder.put("cores", payload.cores()); + formMap.put("name", payload.name()); + formMap.put("ram", payload.ram()); + formMap.put("cores", payload.cores()); if (payload.availabilityZone() != null) - requestBuilder.put("availabilityzone", payload.availabilityZone()); + formMap.put("availabilityzone", payload.availabilityZone()); if (payload.licenceType() != null) - requestBuilder.put("licencetype", payload.licenceType()); + formMap.put("licencetype", payload.licenceType()); if (payload.bootVolume() != null) - requestBuilder.put("bootVolume", payload.bootVolume()); + formMap.put("bootVolume", payload.bootVolume()); else if (payload.bootCdrom() != null) - requestBuilder.put("bootCdrom", payload.bootCdrom()); + formMap.put("bootCdrom", payload.bootCdrom()); - return jsonBinder.toJson(requestBuilder); + return jsonBinder.toJson(formMap); } @Override protected <R extends HttpRequest> R createRequest(R fromRequest, String payload) { - R request = (R) fromRequest.toBuilder().replacePath(String.format("/rest/datacenters/%s/servers/%s", dataCenterId, serverId)).build(); - return super.createRequest(request, payload); + return super.createRequest(genRequest(String.format("datacenters/%s/servers/%s", dataCenterId, serverId), fromRequest), payload); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/snapshot/UpdateSnapshotRequestBinder.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/snapshot/UpdateSnapshotRequestBinder.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/snapshot/UpdateSnapshotRequestBinder.java index 089a237..5b9f984 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/snapshot/UpdateSnapshotRequestBinder.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/snapshot/UpdateSnapshotRequestBinder.java @@ -16,20 +16,23 @@ */ package org.apache.jclouds.profitbricks.rest.binder.snapshot; -import static com.google.common.base.Preconditions.checkNotNull; import com.google.inject.Inject; import org.apache.jclouds.profitbricks.rest.binder.BaseProfitBricksRequestBinder; import org.apache.jclouds.profitbricks.rest.domain.Snapshot; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; +import static com.google.common.base.Preconditions.checkNotNull; +import com.google.common.base.Supplier; +import java.net.URI; +import org.jclouds.location.Provider; public class UpdateSnapshotRequestBinder extends BaseProfitBricksRequestBinder<Snapshot.Request.UpdatePayload> { private String snapshotId; @Inject - UpdateSnapshotRequestBinder(Json jsonBinder) { - super("snapshot", jsonBinder); + UpdateSnapshotRequestBinder(Json jsonBinder, @Provider Supplier<URI> endpointSupplier) { + super("snapshot", jsonBinder, endpointSupplier); } @Override @@ -40,45 +43,45 @@ public class UpdateSnapshotRequestBinder extends BaseProfitBricksRequestBinder<S snapshotId = payload.id(); if (payload.name() != null) - requestBuilder.put("name", payload.name()); + formMap.put("name", payload.name()); if (payload.description() != null) - requestBuilder.put("description", payload.description()); + formMap.put("description", payload.description()); if (payload.licenceType() != null) - requestBuilder.put("licenceType", payload.licenceType()); + formMap.put("licenceType", payload.licenceType()); if (payload.cpuHotPlug() != null) - requestBuilder.put("cpuHotPlug", payload.cpuHotPlug()); + formMap.put("cpuHotPlug", payload.cpuHotPlug()); if (payload.cpuHotUnplug() != null) - requestBuilder.put("cpuHotUnplug", payload.cpuHotUnplug()); + formMap.put("cpuHotUnplug", payload.cpuHotUnplug()); if (payload.ramHotPlug() != null) - requestBuilder.put("ramHotPlug", payload.ramHotPlug()); + formMap.put("ramHotPlug", payload.ramHotPlug()); if (payload.ramHotUnplug() != null) - requestBuilder.put("ramHotUnplug", payload.ramHotUnplug()); + formMap.put("ramHotUnplug", payload.ramHotUnplug()); if (payload.nicHotPlug() != null) - requestBuilder.put("nicHotPlug", payload.nicHotPlug()); + formMap.put("nicHotPlug", payload.nicHotPlug()); if (payload.nicHotUnplug() != null) - requestBuilder.put("nicHotUnplug", payload.nicHotUnplug()); + formMap.put("nicHotUnplug", payload.nicHotUnplug()); if (payload.discVirtioHotPlug() != null) - requestBuilder.put("discVirtioHotPlug", payload.discVirtioHotPlug()); + formMap.put("discVirtioHotPlug", payload.discVirtioHotPlug()); if (payload.discVirtioHotUnplug() != null) - requestBuilder.put("discVirtioHotUnplug", payload.discVirtioHotUnplug()); + formMap.put("discVirtioHotUnplug", payload.discVirtioHotUnplug()); if (payload.discScsiHotPlug() != null) - requestBuilder.put("discScsiHotPlug", payload.discScsiHotPlug()); + formMap.put("discScsiHotPlug", payload.discScsiHotPlug()); if (payload.discScsiHotUnplug() != null) - requestBuilder.put("discScsiHotUnplug", payload.discScsiHotUnplug()); + formMap.put("discScsiHotUnplug", payload.discScsiHotUnplug()); - return jsonBinder.toJson(requestBuilder); + return jsonBinder.toJson(formMap); } @Override http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateSnapshotRequestBinder.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateSnapshotRequestBinder.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateSnapshotRequestBinder.java index c2b8869..bd47ed9 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateSnapshotRequestBinder.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateSnapshotRequestBinder.java @@ -22,8 +22,11 @@ import javax.ws.rs.core.MediaType; import org.apache.jclouds.profitbricks.rest.binder.BaseProfitBricksRequestBinder; import org.apache.jclouds.profitbricks.rest.domain.Volume; import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpRequest.Builder; import static com.google.common.base.Preconditions.checkNotNull; +import com.google.common.base.Supplier; +import com.google.inject.Inject; +import java.net.URI; +import org.jclouds.location.Provider; public class CreateSnapshotRequestBinder extends BaseProfitBricksRequestBinder<Volume.Request.CreateSnapshotPayload> { @@ -31,8 +34,9 @@ public class CreateSnapshotRequestBinder extends BaseProfitBricksRequestBinder<V private String dataCenterId; private String volumeId; - CreateSnapshotRequestBinder() { - super("snapshot", null); + @Inject + CreateSnapshotRequestBinder(@Provider Supplier<URI> endpointSupplier) { + super("snapshot", null, endpointSupplier); this.formMap = HashMultimap.create(); } @@ -56,18 +60,13 @@ public class CreateSnapshotRequestBinder extends BaseProfitBricksRequestBinder<V @Override protected <R extends HttpRequest> R createRequest(R fromRequest, String payload) { - fromRequest = super.createRequest(fromRequest, payload); - Builder<?> reqBuilder = fromRequest.toBuilder(); - - reqBuilder.addFormParams(formMap); - reqBuilder.replacePath(String.format("/rest/datacenters/%s/volumes/%s/create-snapshot", dataCenterId, volumeId)); - - R req = (R) reqBuilder.build(); + R req = (R) fromRequest.toBuilder().addFormParams(formMap).build(); req.getPayload().getContentMetadata().setContentType(MediaType.APPLICATION_FORM_URLENCODED); - return req; + return genRequest(String.format("datacenters/%s/volumes/%s/create-snapshot", dataCenterId, volumeId), req); } + } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateVolumeRequestBinder.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateVolumeRequestBinder.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateVolumeRequestBinder.java index 8cbf1a7..661499e 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateVolumeRequestBinder.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateVolumeRequestBinder.java @@ -16,7 +16,6 @@ */ package org.apache.jclouds.profitbricks.rest.binder.volume; -import static com.google.common.base.Preconditions.checkNotNull; import com.google.inject.Inject; import java.util.HashMap; import java.util.Map; @@ -24,25 +23,32 @@ import org.apache.jclouds.profitbricks.rest.binder.BaseProfitBricksRequestBinder import org.apache.jclouds.profitbricks.rest.domain.Volume; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; +import com.google.common.base.Supplier; +import java.net.URI; +import org.jclouds.location.Provider; +import static com.google.common.base.Preconditions.checkNotNull; public class CreateVolumeRequestBinder extends BaseProfitBricksRequestBinder<Volume.Request.CreatePayload> { private String dataCenterId; @Inject - CreateVolumeRequestBinder(Json jsonBinder) { - super("volume", jsonBinder); + CreateVolumeRequestBinder(Json jsonBinder, @Provider Supplier<URI> endpointSupplier) { + super("volume", jsonBinder, endpointSupplier); } @Override protected String createPayload(Volume.Request.CreatePayload payload) { checkNotNull(payload.dataCenterId(), "dataCenterId"); + checkNotNull(payload.type(), "type"); dataCenterId = payload.dataCenterId(); Map<String, Object> properties = new HashMap<String, Object>(); + properties.put("type", payload.type()); + properties.put("size", payload.size()); if (payload.name() != null) @@ -51,8 +57,8 @@ public class CreateVolumeRequestBinder extends BaseProfitBricksRequestBinder<Vol if (payload.bus() != null) properties.put("bus", payload.bus()); - if (payload.type() != null) - properties.put("type", payload.type()); + if (payload.sshKeys() != null) + properties.put("sshKeys", payload.sshKeys()); if (payload.imagePassword() != null) properties.put("imagePassword", payload.imagePassword()); @@ -62,15 +68,14 @@ public class CreateVolumeRequestBinder extends BaseProfitBricksRequestBinder<Vol else if (payload.licenceType() != null) properties.put("licenceType", payload.licenceType()); - requestBuilder.put("properties", properties); + formMap.put("properties", properties); - return jsonBinder.toJson(requestBuilder); + return jsonBinder.toJson(formMap); } @Override protected <R extends HttpRequest> R createRequest(R fromRequest, String payload) { - R request = (R) fromRequest.toBuilder().replacePath(String.format("/rest/datacenters/%s/volumes", dataCenterId)).build(); - return super.createRequest(request, payload); + return super.createRequest(genRequest(String.format("datacenters/%s/volumes", dataCenterId), fromRequest), payload); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/RestoreSnapshotRequestBinder.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/RestoreSnapshotRequestBinder.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/RestoreSnapshotRequestBinder.java index 8fb5ab7..999aec8 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/RestoreSnapshotRequestBinder.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/RestoreSnapshotRequestBinder.java @@ -23,6 +23,10 @@ import org.apache.jclouds.profitbricks.rest.binder.BaseProfitBricksRequestBinder import org.apache.jclouds.profitbricks.rest.domain.Volume; import org.jclouds.http.HttpRequest; import static com.google.common.base.Preconditions.checkNotNull; +import com.google.common.base.Supplier; +import com.google.inject.Inject; +import java.net.URI; +import org.jclouds.location.Provider; public class RestoreSnapshotRequestBinder extends BaseProfitBricksRequestBinder<Volume.Request.RestoreSnapshotPayload> { @@ -31,8 +35,9 @@ public class RestoreSnapshotRequestBinder extends BaseProfitBricksRequestBinder< private String dataCenterId; private String volumeId; - RestoreSnapshotRequestBinder() { - super("snapshot", null); + @Inject + RestoreSnapshotRequestBinder(@Provider Supplier<URI> endpointSupplier) { + super("snapshot", null, endpointSupplier); this.formMap = HashMultimap.create(); } @@ -50,21 +55,15 @@ public class RestoreSnapshotRequestBinder extends BaseProfitBricksRequestBinder< return ""; } - + @Override protected <R extends HttpRequest> R createRequest(R fromRequest, String payload) { - fromRequest = super.createRequest(fromRequest, payload); - HttpRequest.Builder<?> reqBuilder = fromRequest.toBuilder(); - - reqBuilder.addFormParams(formMap); - reqBuilder.replacePath(String.format("/rest/datacenters/%s/volumes/%s/restore-snapshot", dataCenterId, volumeId)); - - R req = (R) reqBuilder.build(); + R req = (R) fromRequest.toBuilder().addFormParams(formMap).build(); req.getPayload().getContentMetadata().setContentType(MediaType.APPLICATION_FORM_URLENCODED); - return req; + return genRequest(String.format("datacenters/%s/volumes/%s/restore-snapshot", dataCenterId, volumeId), req); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/UpdateVolumeRequestBinder.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/UpdateVolumeRequestBinder.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/UpdateVolumeRequestBinder.java index 188d28d..e300f73 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/UpdateVolumeRequestBinder.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/binder/volume/UpdateVolumeRequestBinder.java @@ -16,12 +16,15 @@ */ package org.apache.jclouds.profitbricks.rest.binder.volume; -import static com.google.common.base.Preconditions.checkNotNull; import com.google.inject.Inject; import org.apache.jclouds.profitbricks.rest.binder.BaseProfitBricksRequestBinder; import org.apache.jclouds.profitbricks.rest.domain.Volume; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; +import com.google.common.base.Supplier; +import java.net.URI; +import org.jclouds.location.Provider; +import static com.google.common.base.Preconditions.checkNotNull; public class UpdateVolumeRequestBinder extends BaseProfitBricksRequestBinder<Volume.Request.UpdatePayload> { @@ -29,8 +32,8 @@ public class UpdateVolumeRequestBinder extends BaseProfitBricksRequestBinder<Vol private String volumeId; @Inject - UpdateVolumeRequestBinder(Json jsonBinder) { - super("volume", jsonBinder); + UpdateVolumeRequestBinder(Json jsonBinder, @Provider Supplier<URI> endpointSupplier) { + super("volume", jsonBinder, endpointSupplier); } @Override @@ -43,21 +46,20 @@ public class UpdateVolumeRequestBinder extends BaseProfitBricksRequestBinder<Vol volumeId = payload.id(); if (payload.name() != null) - requestBuilder.put("name", payload.name()); + formMap.put("name", payload.name()); if (payload.size() != null) - requestBuilder.put("size", payload.size()); + formMap.put("size", payload.size()); if (payload.bus() != null) - requestBuilder.put("bus", payload.bus()); + formMap.put("bus", payload.bus()); - return jsonBinder.toJson(requestBuilder); + return jsonBinder.toJson(formMap); } @Override protected <R extends HttpRequest> R createRequest(R fromRequest, String payload) { - R request = (R) fromRequest.toBuilder().replacePath(String.format("/rest/datacenters/%s/volumes/%s", dataCenterId, volumeId)).build(); - return super.createRequest(request, payload); + return super.createRequest(genRequest(String.format("datacenters/%s/volumes/%s", dataCenterId, volumeId), fromRequest), payload); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/Location.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/Location.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/Location.java index 48536ca..79ac418 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/Location.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/Location.java @@ -16,8 +16,6 @@ */ package org.apache.jclouds.profitbricks.rest.domain; -import com.google.common.base.Enums; - public enum Location { DE_FKB("de/fkb", "Germany, Karlsruhe"), @@ -47,9 +45,7 @@ public enum Location { } public static Location fromValue(String v) { - return Enums - .getIfPresent(Location.class, v) - .or(UNRECOGNIZED); + return Location.fromId(v); } public static Location fromId(String id) { http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/Volume.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/Volume.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/Volume.java index 0608f3d..bab0909 100644 --- a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/Volume.java +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/Volume.java @@ -22,6 +22,7 @@ import org.apache.jclouds.profitbricks.rest.util.Passwords; import org.jclouds.javax.annotation.Nullable; import org.jclouds.json.SerializedNames; import static com.google.common.base.Preconditions.checkArgument; +import java.util.Set; @AutoValue public abstract class Volume { @@ -62,7 +63,7 @@ public abstract class Volume { public abstract String name(); @Nullable - public abstract String type(); + public abstract VolumeType type(); public abstract float size(); @@ -75,6 +76,7 @@ public abstract class Volume { @Nullable public abstract BusType bus(); + @Nullable public abstract LicenceType licenceType(); public abstract boolean cpuHotPlug(); @@ -101,7 +103,7 @@ public abstract class Volume { public abstract Integer deviceNumber(); @SerializedNames({"name", "type", "size", "image", "imagePassword", "bus", "licenceType", "cpuHotPlug", "cpuHotUnplug", "ramHotPlug", "ramHotUnplug", "nicHotPlug", "nicHotUnplug", "discVirtioHotPlug", "discVirtioHotUnplug", "discScsiHotPlug", "discScsiHotUnplug", "deviceNumber"}) - public static Volume.Properties create(String name, String type, float size, String image, String imagePassword, BusType bus, LicenceType licenceType, + public static Volume.Properties create(String name, VolumeType type, float size, String image, String imagePassword, BusType bus, LicenceType licenceType, boolean cpuHotPlug, boolean cpuHotUnplug, boolean ramHotPlug, boolean ramHotUnplug, boolean nicHotPlug, boolean nicHotUnplug, boolean discVirtioHotPlug, boolean discVirtioHotUnplug, boolean discScsiHotPlug, boolean discScsiHotUnplug, int deviceNumber) { @@ -135,12 +137,14 @@ public abstract class Volume { @Nullable public abstract String name(); - @Nullable - public abstract String type(); - + public abstract VolumeType type(); + public abstract int size(); @Nullable + public abstract Set<String> sshKeys(); + + @Nullable public abstract String image(); @Nullable @@ -158,7 +162,8 @@ public abstract class Volume { public abstract static class Builder { public abstract Builder name(String name); - public abstract Builder type(String type); + public abstract Builder type(VolumeType type); + public abstract Builder sshKeys(Set<String> list); public abstract Builder size(int size); public abstract Builder image(String image); public abstract Builder imagePassword(String imagePassword); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/VolumeType.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/VolumeType.java b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/VolumeType.java new file mode 100644 index 0000000..c4503cd --- /dev/null +++ b/profitbricks-rest/src/main/java/org/apache/jclouds/profitbricks/rest/domain/VolumeType.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jclouds.profitbricks.rest.domain; + +import com.google.common.base.Enums; + +public enum VolumeType { + + HDD, UNRECOGNIZED; + + public static VolumeType fromValue(String v) { + return Enums.getIfPresent(VolumeType.class, v).or(UNRECOGNIZED); + } +} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/BinderTestBase.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/BinderTestBase.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/BinderTestBase.java new file mode 100644 index 0000000..42b0841 --- /dev/null +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/BinderTestBase.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jclouds.profitbricks.rest.binder; + +import com.google.common.base.Supplier; +import com.google.common.base.Suppliers; +import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.Injector; +import com.google.inject.TypeLiteral; +import java.net.URI; +import org.apache.jclouds.profitbricks.rest.ProfitBricksProviderMetadata; +import org.jclouds.json.config.GsonModule; +import org.jclouds.location.Provider; +import org.testng.annotations.BeforeClass; + +public class BinderTestBase { + + protected Injector injector; + + @BeforeClass + public void setup() { + this.injector = Guice.createInjector(new GsonModule(), new AbstractModule() { + @Override protected void configure() { + bind(new TypeLiteral<Supplier<URI>>() { + }).annotatedWith(Provider.class).toInstance( + Suppliers.ofInstance(URI.create(new ProfitBricksProviderMetadata().getEndpoint()))); + } + }); + } + +} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/image/UpdateImageRequestBinderTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/image/UpdateImageRequestBinderTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/image/UpdateImageRequestBinderTest.java index 51f15e1..f2d417c 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/image/UpdateImageRequestBinderTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/image/UpdateImageRequestBinderTest.java @@ -16,24 +16,21 @@ */ package org.apache.jclouds.profitbricks.rest.binder.image; -import com.google.inject.Guice; -import com.google.inject.Injector; import java.util.HashMap; +import org.apache.jclouds.profitbricks.rest.binder.BinderTestBase; import org.apache.jclouds.profitbricks.rest.domain.Image; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import org.testng.annotations.Test; @Test(groups = "unit", testName = "UpdateImageRequestBinderTest") -public class UpdateImageRequestBinderTest { - +public class UpdateImageRequestBinderTest extends BinderTestBase { + @Test public void testUpdatePayload() { - - Injector injector = Guice.createInjector(new GsonModule()); + UpdateImageRequestBinder binder = injector.getInstance(UpdateImageRequestBinder.class); Image.Request.UpdatePayload payload = Image.Request.updatingBuilder() @@ -49,7 +46,7 @@ public class UpdateImageRequestBinderTest { actual ); - assertEquals(request.getEndpoint().getPath(), "/rest/images/some-id"); + assertEquals(request.getEndpoint().getPath(), "/rest/v2/images/some-id"); assertNotNull(actual, "Binder returned null payload"); Json json = injector.getInstance(Json.class); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachCdromRequestBinderTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachCdromRequestBinderTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachCdromRequestBinderTest.java index b0af74f..77124b0 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachCdromRequestBinderTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachCdromRequestBinderTest.java @@ -17,24 +17,21 @@ package org.apache.jclouds.profitbricks.rest.binder.server; import com.google.common.reflect.TypeToken; -import com.google.inject.Guice; -import com.google.inject.Injector; import java.util.Map; +import org.apache.jclouds.profitbricks.rest.binder.BinderTestBase; import org.apache.jclouds.profitbricks.rest.domain.Server; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import org.testng.annotations.Test; @Test(groups = "unit", testName = "AttachCdromRequestBinderTest") -public class AttachCdromRequestBinderTest { +public class AttachCdromRequestBinderTest extends BinderTestBase { @Test public void testCreatePayload() { - - Injector injector = Guice.createInjector(new GsonModule()); + AttachCdromRequestBinder binder = injector.getInstance(AttachCdromRequestBinder.class); Server.Request.AttachCdromPayload payload = Server.Request.attachCdromBuilder() @@ -50,7 +47,7 @@ public class AttachCdromRequestBinderTest { actual ); - assertEquals(request.getEndpoint().getPath(), "/rest/datacenters/datacenter-id/servers/server-id/cdroms"); + assertEquals(request.getEndpoint().getPath(), "/rest/v2/datacenters/datacenter-id/servers/server-id/cdroms"); assertNotNull(actual, "Binder returned null payload"); Json json = injector.getInstance(Json.class); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachVolumeRequestBinderTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachVolumeRequestBinderTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachVolumeRequestBinderTest.java index 590da6d..6d6c52c 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachVolumeRequestBinderTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/AttachVolumeRequestBinderTest.java @@ -17,24 +17,21 @@ package org.apache.jclouds.profitbricks.rest.binder.server; import com.google.common.reflect.TypeToken; -import com.google.inject.Guice; -import com.google.inject.Injector; import java.util.Map; +import org.apache.jclouds.profitbricks.rest.binder.BinderTestBase; import org.apache.jclouds.profitbricks.rest.domain.Server; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import org.testng.annotations.Test; @Test(groups = "unit", testName = "AttachVolumeRequestBinderTest") -public class AttachVolumeRequestBinderTest { +public class AttachVolumeRequestBinderTest extends BinderTestBase { @Test public void testCreatePayload() { - Injector injector = Guice.createInjector(new GsonModule()); AttachVolumeRequestBinder binder = injector.getInstance(AttachVolumeRequestBinder.class); Server.Request.AttachVolumePayload payload = Server.Request.attachVolumeBuilder() @@ -50,7 +47,7 @@ public class AttachVolumeRequestBinderTest { actual ); - assertEquals(request.getEndpoint().getPath(), "/rest/datacenters/datacenter-id/servers/server-id/volumes"); + assertEquals(request.getEndpoint().getPath(), "/rest/v2/datacenters/datacenter-id/servers/server-id/volumes"); assertNotNull(actual, "Binder returned null payload"); Json json = injector.getInstance(Json.class); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/CreateServerRequestBinderTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/CreateServerRequestBinderTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/CreateServerRequestBinderTest.java index da0ee30..7993416 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/CreateServerRequestBinderTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/CreateServerRequestBinderTest.java @@ -16,25 +16,22 @@ */ package org.apache.jclouds.profitbricks.rest.binder.server; -import com.google.inject.Guice; -import com.google.inject.Injector; import java.util.HashMap; import java.util.Map; +import org.apache.jclouds.profitbricks.rest.binder.BinderTestBase; import org.apache.jclouds.profitbricks.rest.domain.Server; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import org.testng.annotations.Test; @Test(groups = "unit", testName = "CreateServerRequestBinderTest") -public class CreateServerRequestBinderTest { +public class CreateServerRequestBinderTest extends BinderTestBase { @Test public void testCreatePayload() { - - Injector injector = Guice.createInjector(new GsonModule()); + CreateServerRequestBinder binder = injector.getInstance(CreateServerRequestBinder.class); Server.Request.CreatePayload payload = Server.Request.creatingBuilder() @@ -51,7 +48,7 @@ public class CreateServerRequestBinderTest { actual ); - assertEquals(request.getEndpoint().getPath(), "/rest/datacenters/datacenter-id/servers"); + assertEquals(request.getEndpoint().getPath(), "/rest/v2/datacenters/datacenter-id/servers"); assertNotNull(actual, "Binder returned null payload"); Json json = injector.getInstance(Json.class); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/UpdateServerRequestBinderTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/UpdateServerRequestBinderTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/UpdateServerRequestBinderTest.java index e1c8102..1c61d85 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/UpdateServerRequestBinderTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/server/UpdateServerRequestBinderTest.java @@ -16,23 +16,21 @@ */ package org.apache.jclouds.profitbricks.rest.binder.server; -import com.google.inject.Guice; -import com.google.inject.Injector; import java.util.HashMap; +import org.apache.jclouds.profitbricks.rest.binder.BinderTestBase; import org.apache.jclouds.profitbricks.rest.domain.Server; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import org.testng.annotations.Test; @Test(groups = "unit", testName = "UpdateServerRequestBinderTest") -public class UpdateServerRequestBinderTest { +public class UpdateServerRequestBinderTest extends BinderTestBase { @Test public void testCreatePayload() { - Injector injector = Guice.createInjector(new GsonModule()); + UpdateServerRequestBinder binder = injector.getInstance(UpdateServerRequestBinder.class); Server.Request.UpdatePayload payload = Server.Request.updatingBuilder() @@ -50,7 +48,7 @@ public class UpdateServerRequestBinderTest { actual ); - assertEquals(request.getEndpoint().getPath(), "/rest/datacenters/datacenter-id/servers/server-id"); + assertEquals(request.getEndpoint().getPath(), "/rest/v2/datacenters/datacenter-id/servers/server-id"); assertNotNull(actual, "Binder returned null payload"); Json json = injector.getInstance(Json.class); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/snapshot/UpdateSnapshotRequestBinderTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/snapshot/UpdateSnapshotRequestBinderTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/snapshot/UpdateSnapshotRequestBinderTest.java index 0ad5673..22196b0 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/snapshot/UpdateSnapshotRequestBinderTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/snapshot/UpdateSnapshotRequestBinderTest.java @@ -16,24 +16,21 @@ */ package org.apache.jclouds.profitbricks.rest.binder.snapshot; -import com.google.inject.Guice; -import com.google.inject.Injector; import java.util.HashMap; +import org.apache.jclouds.profitbricks.rest.binder.BinderTestBase; import org.apache.jclouds.profitbricks.rest.domain.Snapshot; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import org.testng.annotations.Test; @Test(groups = "unit", testName = "UpdateSnapshotRequestBinderTest") -public class UpdateSnapshotRequestBinderTest { +public class UpdateSnapshotRequestBinderTest extends BinderTestBase { @Test public void testUpdatePayload() { - Injector injector = Guice.createInjector(new GsonModule()); UpdateSnapshotRequestBinder binder = injector.getInstance(UpdateSnapshotRequestBinder.class); Snapshot.Request.UpdatePayload payload = Snapshot.Request.updatingBuilder() http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateSnapshotRequestBinderTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateSnapshotRequestBinderTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateSnapshotRequestBinderTest.java index 2c1566f..f0e543a 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateSnapshotRequestBinderTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateSnapshotRequestBinderTest.java @@ -18,23 +18,20 @@ package org.apache.jclouds.profitbricks.rest.binder.volume; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import com.google.inject.Guice; -import com.google.inject.Injector; import javax.ws.rs.core.MediaType; +import org.apache.jclouds.profitbricks.rest.binder.BinderTestBase; import org.apache.jclouds.profitbricks.rest.domain.Volume; import org.jclouds.http.HttpRequest; import org.jclouds.io.payloads.UrlEncodedFormPayload; -import org.jclouds.json.config.GsonModule; import static org.testng.Assert.assertEquals; import org.testng.annotations.Test; @Test(groups = "unit", testName = "CreateSnapshotRequestBinderTest") -public class CreateSnapshotRequestBinderTest { +public class CreateSnapshotRequestBinderTest extends BinderTestBase { @Test public void testCreatePayload() { - - Injector injector = Guice.createInjector(new GsonModule()); + CreateSnapshotRequestBinder binder = injector.getInstance(CreateSnapshotRequestBinder.class); Volume.Request.CreateSnapshotPayload payload = Volume.Request.createSnapshotBuilder() @@ -54,7 +51,7 @@ public class CreateSnapshotRequestBinderTest { expectedPayload.put("name", "test-snapshot"); expectedPayload.put("description", "snapshot desc..."); - assertEquals(request.getEndpoint().getPath(), "/rest/datacenters/datacenter-id/volumes/volume-id/create-snapshot"); + assertEquals(request.getEndpoint().getPath(), "/rest/v2/datacenters/datacenter-id/volumes/volume-id/create-snapshot"); assertEquals(request.getPayload().getContentMetadata().getContentType(), MediaType.APPLICATION_FORM_URLENCODED); assertEquals(request.getPayload().getRawContent(), "&" + (new UrlEncodedFormPayload(expectedPayload)).getRawContent()); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateVolumeRequestBinderTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateVolumeRequestBinderTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateVolumeRequestBinderTest.java index f49ab75..9371cdc 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateVolumeRequestBinderTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/CreateVolumeRequestBinderTest.java @@ -16,32 +16,31 @@ */ package org.apache.jclouds.profitbricks.rest.binder.volume; -import com.google.inject.Guice; -import com.google.inject.Injector; import java.util.HashMap; import java.util.Map; +import org.apache.jclouds.profitbricks.rest.binder.BinderTestBase; import org.apache.jclouds.profitbricks.rest.domain.LicenceType; import org.apache.jclouds.profitbricks.rest.domain.Volume; +import org.apache.jclouds.profitbricks.rest.domain.VolumeType; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import org.testng.annotations.Test; @Test(groups = "unit", testName = "CreateVolumeRequestBinderTest") -public class CreateVolumeRequestBinderTest { +public class CreateVolumeRequestBinderTest extends BinderTestBase { @Test public void testCreatePayload() { - Injector injector = Guice.createInjector(new GsonModule()); CreateVolumeRequestBinder binder = injector.getInstance(CreateVolumeRequestBinder.class); Volume.Request.CreatePayload payload = Volume.Request.creatingBuilder() .dataCenterId("datacenter-id") .name("jclouds-volume") .size(3) + .type(VolumeType.HDD) .licenceType(LicenceType.LINUX) .build(); @@ -52,7 +51,7 @@ public class CreateVolumeRequestBinderTest { actual ); - assertEquals(request.getEndpoint().getPath(), "/rest/datacenters/datacenter-id/volumes"); + assertEquals(request.getEndpoint().getPath(), "/rest/v2/datacenters/datacenter-id/volumes"); assertNotNull(actual, "Binder returned null payload"); Json json = injector.getInstance(Json.class); @@ -61,6 +60,7 @@ public class CreateVolumeRequestBinderTest { properties.put("size", 3); properties.put("licenceType", "LINUX"); + properties.put("type", "HDD"); properties.put("name", "jclouds-volume"); HashMap<String, Object> expectedPayload = new HashMap<String, Object>(); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/RestoreSnapshotRequestBinderTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/RestoreSnapshotRequestBinderTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/RestoreSnapshotRequestBinderTest.java index f19daa4..5952ca9 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/RestoreSnapshotRequestBinderTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/RestoreSnapshotRequestBinderTest.java @@ -16,22 +16,19 @@ */ package org.apache.jclouds.profitbricks.rest.binder.volume; -import com.google.inject.Guice; -import com.google.inject.Injector; import javax.ws.rs.core.MediaType; +import org.apache.jclouds.profitbricks.rest.binder.BinderTestBase; import org.apache.jclouds.profitbricks.rest.domain.Volume; import org.jclouds.http.HttpRequest; -import org.jclouds.json.config.GsonModule; import static org.testng.Assert.assertEquals; import org.testng.annotations.Test; @Test(groups = "unit", testName = "RestoreSnapshotRequestBinderTest") -public class RestoreSnapshotRequestBinderTest { +public class RestoreSnapshotRequestBinderTest extends BinderTestBase { @Test public void testRestorePayload() { - - Injector injector = Guice.createInjector(new GsonModule()); + RestoreSnapshotRequestBinder binder = injector.getInstance(RestoreSnapshotRequestBinder.class); Volume.Request.RestoreSnapshotPayload payload = Volume.Request.restoreSnapshotBuilder() @@ -45,7 +42,7 @@ public class RestoreSnapshotRequestBinderTest { binder.createPayload(payload) ); - assertEquals(request.getEndpoint().getPath(), "/rest/datacenters/datacenter-id/volumes/volume-id/restore-snapshot"); + assertEquals(request.getEndpoint().getPath(), "/rest/v2/datacenters/datacenter-id/volumes/volume-id/restore-snapshot"); assertEquals(request.getPayload().getContentMetadata().getContentType(), MediaType.APPLICATION_FORM_URLENCODED); assertEquals(request.getPayload().getRawContent(), "&snapshotId=snapshot-id"); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/UpdateVolumeRequestBinderTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/UpdateVolumeRequestBinderTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/UpdateVolumeRequestBinderTest.java index f0e6694..6627b71 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/UpdateVolumeRequestBinderTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/binder/volume/UpdateVolumeRequestBinderTest.java @@ -17,24 +17,21 @@ package org.apache.jclouds.profitbricks.rest.binder.volume; import com.google.common.reflect.TypeToken; -import com.google.inject.Guice; -import com.google.inject.Injector; import java.util.Map; +import org.apache.jclouds.profitbricks.rest.binder.BinderTestBase; import org.apache.jclouds.profitbricks.rest.domain.Volume; import org.jclouds.http.HttpRequest; import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import org.testng.annotations.Test; @Test(groups = "unit", testName = "UpdateVolumeRequestBinderTest") -public class UpdateVolumeRequestBinderTest { +public class UpdateVolumeRequestBinderTest extends BinderTestBase { @Test public void testCreatePayload() { - Injector injector = Guice.createInjector(new GsonModule()); UpdateVolumeRequestBinder binder = injector.getInstance(UpdateVolumeRequestBinder.class); Volume.Request.UpdatePayload payload = Volume.Request.updatingBuilder() @@ -50,7 +47,7 @@ public class UpdateVolumeRequestBinderTest { actual ); - assertEquals(request.getEndpoint().getPath(), "/rest/datacenters/datacenter-id/volumes/volume-id"); + assertEquals(request.getEndpoint().getPath(), "/rest/v2/datacenters/datacenter-id/volumes/volume-id"); assertNotNull(actual, "Binder returned null payload"); Json json = injector.getInstance(Json.class); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/ServerApiMockTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/ServerApiMockTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/ServerApiMockTest.java index d08441e..1b11617 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/ServerApiMockTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/ServerApiMockTest.java @@ -135,7 +135,7 @@ public class ServerApiMockTest extends BaseProfitBricksApiMockTest { assertNotNull(server.id()); assertEquals(this.server.getRequestCount(), 1); - assertSent(this.server, "POST", "/rest/datacenters/datacenter-id/servers", + assertSent(this.server, "POST", "/datacenters/datacenter-id/servers", "{\"properties\": {\"name\": \"jclouds-node\", \"cores\": 1, \"ram\": 1024}}" ); } @@ -156,7 +156,7 @@ public class ServerApiMockTest extends BaseProfitBricksApiMockTest { .build()); assertEquals(server.getRequestCount(), 1); - assertSent(server, "PATCH", "/rest/datacenters/datacenter-id/servers/some-id", "{\"name\": \"apache-node\", \"ram\": 2048, \"cores\": 2}"); + assertSent(server, "PATCH", "/datacenters/datacenter-id/servers/some-id", "{\"name\": \"apache-node\", \"ram\": 2048, \"cores\": 2}"); } @Test @@ -224,7 +224,7 @@ public class ServerApiMockTest extends BaseProfitBricksApiMockTest { assertEquals(volume.properties().name(), "Storage"); assertEquals(server.getRequestCount(), 1); - assertSent(server, "POST", "/rest/datacenters/datacenter-id/servers/server-id/volumes", "{\"id\": \"volume-id\"}"); + assertSent(server, "POST", "/datacenters/datacenter-id/servers/server-id/volumes", "{\"id\": \"volume-id\"}"); } @Test @@ -277,7 +277,7 @@ public class ServerApiMockTest extends BaseProfitBricksApiMockTest { ); assertEquals(server.getRequestCount(), 1); - assertSent(server, "POST", "/rest/datacenters/datacenter-id/servers/server-id/cdroms", "{\"id\": \"image-id\"}"); + assertSent(server, "POST", "/datacenters/datacenter-id/servers/server-id/cdroms", "{\"id\": \"image-id\"}"); } @Test http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/VolumeApiLiveTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/VolumeApiLiveTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/VolumeApiLiveTest.java index 6829fc1..ec6532a 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/VolumeApiLiveTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/VolumeApiLiveTest.java @@ -17,12 +17,16 @@ package org.apache.jclouds.profitbricks.rest.features; import com.google.common.base.Predicate; +import java.util.HashSet; import java.util.List; import org.apache.jclouds.profitbricks.rest.domain.DataCenter; +import org.apache.jclouds.profitbricks.rest.domain.Image; import org.apache.jclouds.profitbricks.rest.domain.LicenceType; import org.apache.jclouds.profitbricks.rest.domain.Snapshot; import org.apache.jclouds.profitbricks.rest.domain.State; import org.apache.jclouds.profitbricks.rest.domain.Volume; +import org.apache.jclouds.profitbricks.rest.domain.VolumeType; +import org.apache.jclouds.profitbricks.rest.domain.options.DepthOptions; import org.apache.jclouds.profitbricks.rest.ids.VolumeRef; import org.apache.jclouds.profitbricks.rest.internal.BaseProfitBricksLiveTest; import org.testng.annotations.AfterClass; @@ -53,13 +57,36 @@ public class VolumeApiLiveTest extends BaseProfitBricksLiveTest { @Test public void testCreateVolume() { assertNotNull(dataCenter); + + List<Image> images = api.imageApi().getList(new DepthOptions().depth(5)); + + Image testImage = null; + + for (Image image : images) { + if ( + image.metadata().state() == State.AVAILABLE && + image.properties().isPublic() && + image.properties().imageType() == Image.Type.HDD && + image.properties().location() == TestLocation && + image.properties().licenceType() == LicenceType.LINUX && + ( testImage == null || testImage.properties().size() > image.properties().size() ) + ) { + testImage = image; + } + } + + HashSet<String> sshKeys = new HashSet<String>(); + sshKeys.add("hQGOEJeFL91EG3+l9TtRbWNjzhDVHeLuL3NWee6bekA="); testVolume = volumeApi().createVolume( Volume.Request.creatingBuilder() .dataCenterId(dataCenter.id()) .name("jclouds-volume") - .size(3) + .size(4) .licenceType(LicenceType.LINUX) + .type(VolumeType.HDD) + .image(testImage.id()) + .sshKeys(sshKeys) .build()); assertNotNull(testVolume); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/VolumeApiMockTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/VolumeApiMockTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/VolumeApiMockTest.java index e91f6ef..52d40de 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/VolumeApiMockTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/features/VolumeApiMockTest.java @@ -17,9 +17,11 @@ package org.apache.jclouds.profitbricks.rest.features; import com.squareup.okhttp.mockwebserver.MockResponse; +import java.util.HashSet; import java.util.List; import org.apache.jclouds.profitbricks.rest.domain.LicenceType; import org.apache.jclouds.profitbricks.rest.domain.Volume; +import org.apache.jclouds.profitbricks.rest.domain.VolumeType; import org.apache.jclouds.profitbricks.rest.domain.options.DepthOptions; import org.apache.jclouds.profitbricks.rest.internal.BaseProfitBricksApiMockTest; import static org.testng.Assert.assertEquals; @@ -94,6 +96,7 @@ public class VolumeApiMockTest extends BaseProfitBricksApiMockTest { .dataCenterId("datacenter-id") .name("jclouds-volume") .size(3) + .type(VolumeType.HDD) .licenceType(LicenceType.LINUX) .build()); @@ -101,8 +104,36 @@ public class VolumeApiMockTest extends BaseProfitBricksApiMockTest { assertNotNull(volume.id()); assertEquals(server.getRequestCount(), 1); - assertSent(server, "POST", "/rest/datacenters/datacenter-id/volumes", - "{\"properties\": {\"name\": \"jclouds-volume\", \"size\": 3, \"licenceType\": \"LINUX\"}}" + assertSent(server, "POST", "/datacenters/datacenter-id/volumes", + "{\"properties\": {\"name\": \"jclouds-volume\", \"size\": 3, \"licenceType\": \"LINUX\", \"type\":\"HDD\"}}" + ); + } + + @Test + public void testCreateWithSsh() throws InterruptedException { + server.enqueue( + new MockResponse().setBody(stringFromResource("/volume/get.json")) + ); + + HashSet<String> sshKeys = new HashSet<String>(); + sshKeys.add("hQGOEJeFL91EG3+l9TtRbWNjzhDVHeLuL3NWee6bekA="); + + Volume volume = volumeApi().createVolume( + Volume.Request.creatingBuilder() + .dataCenterId("datacenter-id") + .name("jclouds-volume") + .size(3) + .type(VolumeType.HDD) + .licenceType(LicenceType.LINUX) + .sshKeys(sshKeys) + .build()); + + assertNotNull(volume); + assertNotNull(volume.id()); + + assertEquals(server.getRequestCount(), 1); + assertSent(server, "POST", "/datacenters/datacenter-id/volumes", + "{\"properties\": {\"name\": \"jclouds-volume\", \"size\": 3, \"licenceType\": \"LINUX\", \"sshKeys\":[\"hQGOEJeFL91EG3+l9TtRbWNjzhDVHeLuL3NWee6bekA=\"], \"type\":\"HDD\"}}" ); } @@ -120,7 +151,7 @@ public class VolumeApiMockTest extends BaseProfitBricksApiMockTest { .build()); assertEquals(server.getRequestCount(), 1); - assertSent(server, "PATCH", "/rest/datacenters/datacenter-id/volumes/some-id", "{\"name\": \"apache-volume\"}"); + assertSent(server, "PATCH", "/datacenters/datacenter-id/volumes/some-id", "{\"name\": \"apache-volume\"}"); } @Test @@ -149,7 +180,7 @@ public class VolumeApiMockTest extends BaseProfitBricksApiMockTest { ); assertEquals(server.getRequestCount(), 1); - assertSent(server, "POST", "/rest/datacenters/datacenter-id/volumes/volume-id/create-snapshot"); + assertSent(server, "POST", "/datacenters/datacenter-id/volumes/volume-id/create-snapshot"); } @Test @@ -166,7 +197,7 @@ public class VolumeApiMockTest extends BaseProfitBricksApiMockTest { ); assertEquals(server.getRequestCount(), 1); - assertSent(server, "POST", "/rest/datacenters/datacenter-id/volumes/volume-id/restore-snapshot"); + assertSent(server, "POST", "/datacenters/datacenter-id/volumes/volume-id/restore-snapshot"); } private VolumeApi volumeApi() { http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/bb9dfbaf/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/internal/BaseProfitBricksLiveTest.java ---------------------------------------------------------------------- diff --git a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/internal/BaseProfitBricksLiveTest.java b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/internal/BaseProfitBricksLiveTest.java index 0a42a4b..79b7f92 100644 --- a/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/internal/BaseProfitBricksLiveTest.java +++ b/profitbricks-rest/src/test/java/org/apache/jclouds/profitbricks/rest/internal/BaseProfitBricksLiveTest.java @@ -36,6 +36,7 @@ import org.apache.jclouds.profitbricks.rest.domain.Location; import org.apache.jclouds.profitbricks.rest.domain.Server; import org.apache.jclouds.profitbricks.rest.domain.State; import org.apache.jclouds.profitbricks.rest.domain.Volume; +import org.apache.jclouds.profitbricks.rest.domain.VolumeType; import org.apache.jclouds.profitbricks.rest.ids.ServerRef; import org.apache.jclouds.profitbricks.rest.ids.VolumeRef; import org.jclouds.apis.BaseApiLiveTest; @@ -170,6 +171,7 @@ public class BaseProfitBricksLiveTest extends BaseApiLiveTest<ProfitBricksApi> { .dataCenterId(dataCenter.id()) .name("jclouds-volume") .size(3) + .type(VolumeType.HDD) .licenceType(LicenceType.LINUX) .build()); }
