diff --git a/aws/core/src/main/java/org/jclouds/aws/ec2/compute/domain/EC2Size.java b/aws/core/src/main/java/org/jclouds/aws/ec2/compute/domain/EC2Size.java index 18c9ab9716..f11b592abb 100644 --- a/aws/core/src/main/java/org/jclouds/aws/ec2/compute/domain/EC2Size.java +++ b/aws/core/src/main/java/org/jclouds/aws/ec2/compute/domain/EC2Size.java @@ -32,16 +32,17 @@ import com.google.common.collect.ImmutableSet; public class EC2Size extends SizeImpl { /** The serialVersionUID */ private static final long serialVersionUID = 8605688733788974797L; - private final InstanceType instanceType; + private final String instanceType; - EC2Size(InstanceType instanceType, Double cores, Integer ram, Integer disk, + EC2Size(String instanceType, Double cores, Integer ram, Integer disk, Iterable supportedArchitectures) { - super(instanceType.toString(), instanceType.toString(), null, null, ImmutableMap - . of(),cores, ram, disk, supportedArchitectures); + super(instanceType, + instanceType, null, null, + ImmutableMap. of(),cores, ram, disk, supportedArchitectures); this.instanceType = instanceType; } - EC2Size(InstanceType instanceType, Integer cores, Integer ram, Integer disk, + EC2Size(String instanceType, Integer cores, Integer ram, Integer disk, Iterable supportedArchitectures) { this(instanceType, cores.doubleValue(), ram, disk, supportedArchitectures); } @@ -49,7 +50,7 @@ public class EC2Size extends SizeImpl { /** * Returns the EC2 InstanceType associated with this size. */ - public InstanceType getInstanceType() { + public String getInstanceType() { return instanceType; } diff --git a/aws/core/src/main/java/org/jclouds/aws/ec2/domain/InstanceType.java b/aws/core/src/main/java/org/jclouds/aws/ec2/domain/InstanceType.java index 403d3cb5c7..63a0aaa59d 100644 --- a/aws/core/src/main/java/org/jclouds/aws/ec2/domain/InstanceType.java +++ b/aws/core/src/main/java/org/jclouds/aws/ec2/domain/InstanceType.java @@ -23,16 +23,16 @@ import static com.google.common.base.Preconditions.checkNotNull; import org.jclouds.aws.ec2.EC2AsyncClient; /** - * + * * The type of the instance. Description accurate as of 8-15-2009 release. - * + * * @author Adrian Cole * @see EC2AsyncClient#describeInstances * @see EC2AsyncClient#runInstances * @see EC2AsyncClient#terminateInstances - * + * */ -public enum InstanceType { +public class InstanceType { /** * Small Instance *
    @@ -43,7 +43,7 @@ public enum InstanceType { *
  • I/O Performance: Moderate
  • *
*/ - M1_SMALL, + public static final String M1_SMALL = "m1.small"; /** * Large Instance *
    @@ -54,7 +54,7 @@ public enum InstanceType { *
  • I/O Performance: High
  • *
*/ - M1_LARGE, + public static final String M1_LARGE = "m1.large"; /** * Extra Large Instance *
    @@ -65,7 +65,7 @@ public enum InstanceType { *
  • I/O Performance: High
  • *
*/ - M1_XLARGE, + public static final String M1_XLARGE = "m1.xlarge"; /** * High-Memory Extra Large Instance *
    @@ -76,7 +76,7 @@ public enum InstanceType { *
  • I/O Performance: Moderate
  • *
*/ - M2_XLARGE, + public static final String M2_XLARGE = "m2.xlarge"; /** * High-Memory Double Extra Large Instance *
    @@ -87,7 +87,7 @@ public enum InstanceType { *
  • I/O Performance: High
  • *
*/ - M2_2XLARGE, + public static final String M2_2XLARGE = "m2.2xlarge"; /** * High-Memory Quadruple Extra Large Instance *
    @@ -98,7 +98,7 @@ public enum InstanceType { *
  • I/O Performance: High
  • *
*/ - M2_4XLARGE, + public static final String M2_4XLARGE = "m2.4xlarge"; /** * High-CPU Medium Instance *
    @@ -109,7 +109,7 @@ public enum InstanceType { *
  • I/O Performance: Moderate
  • *
*/ - C1_MEDIUM, + public static final String C1_MEDIUM = "c1.medium"; /** * High-CPU Extra Large Instance *
    @@ -120,18 +120,14 @@ public enum InstanceType { *
  • I/O Performance: High
  • *
*/ - C1_XLARGE; - public String value() { - return name().toLowerCase().replaceAll("_", "."); + public static final String C1_XLARGE = "c1.xlarge"; + + public static String fromValue(String type) { + return checkNotNull(type, "type").replaceAll("\\.", "_").toUpperCase(); } - @Override - public String toString() { - return value(); - } - - public static InstanceType fromValue(String type) { - return valueOf(checkNotNull(type, "type").replaceAll("\\.", "_").toUpperCase()); + public static String toDotSeparatorLowercaseNotation(String type) { + return checkNotNull(type, "type").replaceAll("_", "\\.").toLowerCase(); } } \ No newline at end of file diff --git a/aws/core/src/main/java/org/jclouds/aws/ec2/domain/RunningInstance.java b/aws/core/src/main/java/org/jclouds/aws/ec2/domain/RunningInstance.java index d3145c5933..6a0ba53f7a 100644 --- a/aws/core/src/main/java/org/jclouds/aws/ec2/domain/RunningInstance.java +++ b/aws/core/src/main/java/org/jclouds/aws/ec2/domain/RunningInstance.java @@ -123,7 +123,7 @@ public class RunningInstance implements Comparable { private final String imageId; private final String instanceId; private final InstanceState instanceState; - private final InstanceType instanceType; + private final String instanceType; @Nullable private final InetAddress ipAddress; @Nullable @@ -159,7 +159,7 @@ public class RunningInstance implements Comparable { public RunningInstance(Region region, @Nullable String amiLaunchIndex, @Nullable String dnsName, String imageId, String instanceId, InstanceState instanceState, - InstanceType instanceType, @Nullable InetAddress ipAddress, @Nullable String kernelId, + String instanceType, @Nullable InetAddress ipAddress, @Nullable String kernelId, @Nullable String keyName, Date launchTime, boolean monitoring, AvailabilityZone availabilityZone, @Nullable String platform, @Nullable String privateDnsName, @Nullable InetAddress privateIpAddress, @@ -242,7 +242,7 @@ public class RunningInstance implements Comparable { /** * The instance type. */ - public InstanceType getInstanceType() { + public String getInstanceType() { return instanceType; } diff --git a/aws/core/src/main/java/org/jclouds/aws/ec2/functions/RunningInstanceToStorageMappingUnix.java b/aws/core/src/main/java/org/jclouds/aws/ec2/functions/RunningInstanceToStorageMappingUnix.java index c09e87d20f..fccc782fb0 100644 --- a/aws/core/src/main/java/org/jclouds/aws/ec2/functions/RunningInstanceToStorageMappingUnix.java +++ b/aws/core/src/main/java/org/jclouds/aws/ec2/functions/RunningInstanceToStorageMappingUnix.java @@ -45,10 +45,10 @@ public class RunningInstanceToStorageMappingUnix implements Function apply(RunningInstance instance) { - final InstanceType instanceType = instance.getInstanceType(); + final String instanceType = instance.getInstanceType(); Map mapping = Maps.newHashMap(); - + //root partition mapping.put(String.format(LOCAL_PARTITION_GB_PATTERN, ROOT_PARTITION_NAME_UNIX), getRootPartitionSizeForInstanceType(instanceType) + ""); @@ -79,20 +79,20 @@ public class RunningInstanceToStorageMappingUnix implements Function * @see */ - public int getRootPartitionSizeForInstanceType(InstanceType instanceType) { + public int getRootPartitionSizeForInstanceType(String instanceType) { /* per documentation at http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?instance-types.html M2 XLARGE doesn't have the root partition TODO verify */ - if(InstanceType.M2_XLARGE == instanceType) return 0; + if(InstanceType.M2_XLARGE.equals(instanceType)) return 0; //other types have 10 GB root partition return 10; } - public static String getPrimaryPartitionDeviceName(InstanceType instanceType) { - if(InstanceType.M1_SMALL == instanceType || InstanceType.C1_MEDIUM == instanceType) + public static String getPrimaryPartitionDeviceName(String instanceType) { + if(InstanceType.M1_SMALL.equals(instanceType) || InstanceType.C1_MEDIUM.equals(instanceType)) return "/dev/sda2"; return "/dev/sdb"; } @@ -106,32 +106,23 @@ public class RunningInstanceToStorageMappingUnix implements Function */ - public static Map getAdditionalPartitionsMapping(InstanceType instanceType) { + public static Map getAdditionalPartitionsMapping(String instanceType) { Map mapping = Maps.newHashMap(); int size = 0; - switch(instanceType) { - case M1_LARGE: - case M1_XLARGE: - case C1_XLARGE: - size = 420; - break; - - case M2_4XLARGE: - size = 840; - break; + if(InstanceType.M1_LARGE.equals(instanceType) || + InstanceType.M1_XLARGE.equals(instanceType) || + InstanceType.C1_XLARGE.equals(instanceType)) { + size = 420; + } else if (InstanceType.M2_4XLARGE.equals(instanceType)) { + size = 840; } //m1.large, m1.xlarge, and c1.xlarge - if(InstanceType.M1_LARGE == instanceType || InstanceType.M1_XLARGE == instanceType || - InstanceType.C1_XLARGE == instanceType || InstanceType.M2_4XLARGE == instanceType) { + if(InstanceType.M1_LARGE.equals(instanceType) || InstanceType.M1_XLARGE.equals(instanceType) || + InstanceType.C1_XLARGE.equals(instanceType) || InstanceType.M2_4XLARGE.equals(instanceType)) { mapping.put("/dev/sdc", size); } - if(InstanceType.M1_XLARGE == instanceType || InstanceType.C1_XLARGE == instanceType) { + if(InstanceType.M1_XLARGE.equals(instanceType) || InstanceType.C1_XLARGE.equals(instanceType)) { mapping.put("/dev/sdd", size); } - if(InstanceType.M1_XLARGE == instanceType || InstanceType.C1_XLARGE == instanceType) { + if(InstanceType.M1_XLARGE.equals(instanceType) || InstanceType.C1_XLARGE.equals(instanceType)) { mapping.put("/dev/sde", size); } diff --git a/aws/core/src/main/java/org/jclouds/aws/ec2/options/RunInstancesOptions.java b/aws/core/src/main/java/org/jclouds/aws/ec2/options/RunInstancesOptions.java index b5c7621cc1..84c1e9dde1 100644 --- a/aws/core/src/main/java/org/jclouds/aws/ec2/options/RunInstancesOptions.java +++ b/aws/core/src/main/java/org/jclouds/aws/ec2/options/RunInstancesOptions.java @@ -108,8 +108,8 @@ public class RunInstancesOptions extends BaseEC2RequestOptions { /** * Specifies the instance type. default small; */ - public RunInstancesOptions asType(InstanceType type) { - formParameters.put("InstanceType", checkNotNull(type, "type").toString()); + public RunInstancesOptions asType(String type) { + formParameters.put("InstanceType", checkNotNull(type, "type")); return this; } @@ -230,7 +230,7 @@ public class RunInstancesOptions extends BaseEC2RequestOptions { /** * @see RunInstancesOptions#asType(InstanceType) */ - public static RunInstancesOptions asType(InstanceType instanceType) { + public static RunInstancesOptions asType(String instanceType) { RunInstancesOptions options = new RunInstancesOptions(); return options.asType(instanceType); } diff --git a/aws/core/src/main/java/org/jclouds/aws/ec2/services/InstanceAsyncClient.java b/aws/core/src/main/java/org/jclouds/aws/ec2/services/InstanceAsyncClient.java index 1eb8e2fba0..fa8ef61333 100644 --- a/aws/core/src/main/java/org/jclouds/aws/ec2/services/InstanceAsyncClient.java +++ b/aws/core/src/main/java/org/jclouds/aws/ec2/services/InstanceAsyncClient.java @@ -202,7 +202,7 @@ public interface InstanceAsyncClient { @FormParams(keys = { ACTION, "Attribute" }, values = { "DescribeInstanceAttribute", "instanceType" }) @XMLResponseParser(InstanceTypeHandler.class) - ListenableFuture getInstanceTypeForInstanceInRegion( + ListenableFuture getInstanceTypeForInstanceInRegion( @EndpointParam(parser = RegionToEndpoint.class) @Nullable Region region, @FormParam("InstanceId") String instanceId); @@ -302,7 +302,7 @@ public interface InstanceAsyncClient { ListenableFuture setInstanceTypeForInstanceInRegion( @EndpointParam(parser = RegionToEndpoint.class) @Nullable Region region, @FormParam("InstanceId") String instanceId, - @FormParam("Value") InstanceType instanceType); + @FormParam("Value") String instanceType); /** * @see AMIClient#setInstanceInitiatedShutdownBehaviorForInstanceInRegion diff --git a/aws/core/src/main/java/org/jclouds/aws/ec2/services/InstanceClient.java b/aws/core/src/main/java/org/jclouds/aws/ec2/services/InstanceClient.java index 9f5914ccd3..e34461a572 100644 --- a/aws/core/src/main/java/org/jclouds/aws/ec2/services/InstanceClient.java +++ b/aws/core/src/main/java/org/jclouds/aws/ec2/services/InstanceClient.java @@ -311,7 +311,7 @@ public interface InstanceClient { * which instance to describe the attribute of * @return The instance type of the instance. */ - InstanceType getInstanceTypeForInstanceInRegion(@Nullable Region region, String instanceId); + String getInstanceTypeForInstanceInRegion(@Nullable Region region, String instanceId); /** * @@ -467,7 +467,7 @@ public interface InstanceClient { * /> */ void setInstanceTypeForInstanceInRegion(@Nullable Region region, String instanceId, - InstanceType instanceType); + String instanceType); /** * Specifies whether the instance's Amazon EBS volumes are stopped or terminated when the diff --git a/aws/core/src/main/java/org/jclouds/aws/ec2/xml/BaseReservationHandler.java b/aws/core/src/main/java/org/jclouds/aws/ec2/xml/BaseReservationHandler.java index 4bff8cc011..45a31c8c2c 100644 --- a/aws/core/src/main/java/org/jclouds/aws/ec2/xml/BaseReservationHandler.java +++ b/aws/core/src/main/java/org/jclouds/aws/ec2/xml/BaseReservationHandler.java @@ -75,7 +75,7 @@ public abstract class BaseReservationHandler extends HandlerWithResult { private String imageId; private String instanceId; private InstanceState instanceState; - private InstanceType instanceType; + private String instanceType; private InetAddress ipAddress; private String kernelId; private String keyName; @@ -141,7 +141,7 @@ public abstract class BaseReservationHandler extends HandlerWithResult { } else if (qName.equals("name")) { instanceState = InstanceState.fromValue(currentOrNull()); } else if (qName.equals("instanceType")) { - instanceType = InstanceType.fromValue(currentOrNull()); + instanceType = currentOrNull(); } else if (qName.equals("ipAddress")) { ipAddress = parseInetAddress(currentOrNull()); } else if (qName.equals("kernelId")) { diff --git a/aws/core/src/main/java/org/jclouds/aws/ec2/xml/InstanceTypeHandler.java b/aws/core/src/main/java/org/jclouds/aws/ec2/xml/InstanceTypeHandler.java index a78142b1a8..370fae3f07 100644 --- a/aws/core/src/main/java/org/jclouds/aws/ec2/xml/InstanceTypeHandler.java +++ b/aws/core/src/main/java/org/jclouds/aws/ec2/xml/InstanceTypeHandler.java @@ -28,18 +28,18 @@ import org.jclouds.http.functions.ParseSax; * @author Adrian Cole */ public class InstanceTypeHandler extends - ParseSax.HandlerWithResult { + ParseSax.HandlerWithResult { private StringBuilder currentText = new StringBuilder(); - private InstanceType type; + private String type; - public InstanceType getResult() { + public String getResult() { return type; } public void endElement(String uri, String name, String qName) { if (qName.equalsIgnoreCase("value")) { - this.type = InstanceType.fromValue(currentText.toString().trim()); + this.type = currentText.toString().trim(); } currentText = new StringBuilder(); } diff --git a/aws/core/src/test/java/org/jclouds/aws/ec2/services/InstanceAsyncClientTest.java b/aws/core/src/test/java/org/jclouds/aws/ec2/services/InstanceAsyncClientTest.java index d7bfcc77f0..97d3936592 100644 --- a/aws/core/src/test/java/org/jclouds/aws/ec2/services/InstanceAsyncClientTest.java +++ b/aws/core/src/test/java/org/jclouds/aws/ec2/services/InstanceAsyncClientTest.java @@ -463,7 +463,7 @@ public class InstanceAsyncClientTest extends BaseEC2AsyncClientTest httpMethod = processor.createRequest(method, null, "1", InstanceType.C1_MEDIUM); diff --git a/aws/core/src/test/java/org/jclouds/aws/ec2/xml/DescribeInstanceAttributeTest.java b/aws/core/src/test/java/org/jclouds/aws/ec2/xml/DescribeInstanceAttributeTest.java index c575729c02..1841e7876e 100644 --- a/aws/core/src/test/java/org/jclouds/aws/ec2/xml/DescribeInstanceAttributeTest.java +++ b/aws/core/src/test/java/org/jclouds/aws/ec2/xml/DescribeInstanceAttributeTest.java @@ -49,7 +49,7 @@ public class DescribeInstanceAttributeTest extends BaseHandlerTest { InputStream is = getClass().getResourceAsStream("/ec2/instanceType.xml"); InstanceTypeHandler handler = injector.getInstance(InstanceTypeHandler.class); - InstanceType result = factory.create(handler).parse(is); + String result = factory.create(handler).parse(is); assertEquals(result, InstanceType.M1_SMALL); } diff --git a/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/RimuHostingAsyncClient.java b/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/RimuHostingAsyncClient.java index 5615626fa9..8d4d34ead5 100644 --- a/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/RimuHostingAsyncClient.java +++ b/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/RimuHostingAsyncClient.java @@ -38,7 +38,7 @@ import org.jclouds.rest.annotations.MapPayloadParam; import org.jclouds.rest.annotations.MatrixParams; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.annotations.ResponseParser; -import org.jclouds.rimuhosting.miro.binder.RimuHostingCreateInstanceBinder; +import org.jclouds.rimuhosting.miro.binder.CreateServerOptions; import org.jclouds.rimuhosting.miro.binder.RimuHostingRebootJsonBinder; import org.jclouds.rimuhosting.miro.domain.Image; import org.jclouds.rimuhosting.miro.domain.NewServerResponse; @@ -69,6 +69,9 @@ import com.google.common.util.concurrent.ListenableFuture; @Endpoint(RimuHosting.class) public interface RimuHostingAsyncClient { + /** + * @see RimuHostingClient#getImageList + */ @GET @Path("/distributions") @ResponseParser(ParseImagesFromJsonResponse.class) @@ -77,6 +80,9 @@ public interface RimuHostingAsyncClient { @ExceptionParser(ParseRimuHostingException.class) ListenableFuture> getImageList(); + /** + * @see RimuHostingClient#getServerList + */ @GET @Path("/orders") @ResponseParser(ParseInstancesFromJsonResponse.class) @@ -85,7 +91,10 @@ public interface RimuHostingAsyncClient { @Consumes(MediaType.APPLICATION_JSON) @ExceptionParser(ParseRimuHostingException.class) ListenableFuture> getServerList(); - + + /** + * @see RimuHostingClient#getPricingPlanList + */ @GET @Path("/pricing-plans") @MatrixParams(keys = "server-type", values = "VPS") @@ -94,33 +103,22 @@ public interface RimuHostingAsyncClient { @ResponseParser(ParsePricingPlansFromJsonResponse.class) ListenableFuture> getPricingPlanList(); + /** + * @see RimuHostingClient#createServer + */ @POST @Path("/orders/new-vps") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) @ExceptionParser(ParseRimuHostingException.class) @ResponseParser(ParseNewInstanceResponseFromJsonResponse.class) - @MapBinder(RimuHostingCreateInstanceBinder.class) + @MapBinder(CreateServerOptions.class) ListenableFuture createServer(@MapPayloadParam("name") String name, - @MapPayloadParam("imageId") String imageId, @MapPayloadParam("planId") String planId); - - @POST - @Path("/orders/new-vps") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - @ExceptionParser(ParseRimuHostingException.class) - @ResponseParser(ParseNewInstanceResponseFromJsonResponse.class) - @MapBinder(RimuHostingCreateInstanceBinder.class) - ListenableFuture createServer(@MapPayloadParam("name") String name, - @MapPayloadParam("imageId") String imageId, @MapPayloadParam("planId") String planId, - @MapPayloadParam("password") String password); - - @GET - @Path("/orders/order-{id}-blah/vps") - @Consumes(MediaType.APPLICATION_JSON) - @ResponseParser(ParseInstanceInfoFromJsonResponse.class) - ListenableFuture getServerInfo(@PathParam("id") Long id); + @MapPayloadParam("imageId") String imageId, @MapPayloadParam("planId") String planId, CreateServerOptions ... options); + /** + * @see RimuHostingClient#getServer + */ @GET @Path("/orders/order-{id}-blah") @Consumes(MediaType.APPLICATION_JSON) @@ -128,6 +126,9 @@ public interface RimuHostingAsyncClient { @ExceptionParser(ParseRimuHostingException.class) ListenableFuture getServer(@PathParam("id") Long id); + /** + * @see RimuHostingClient#restartServer + */ @PUT @Path("/orders/order-{id}-blah/vps/running-state") @Produces(MediaType.APPLICATION_JSON) @@ -137,6 +138,9 @@ public interface RimuHostingAsyncClient { @ExceptionParser(ParseRimuHostingException.class) ListenableFuture restartServer(@PathParam("id") Long id); + /** + * @see RimuHostingClient#destoryServer + */ @DELETE @Path("/orders/order-{id}-blah/vps") @Consumes(MediaType.APPLICATION_JSON) diff --git a/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/RimuHostingClient.java b/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/RimuHostingClient.java index 21edd91bdf..51ec5ccd8a 100644 --- a/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/RimuHostingClient.java +++ b/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/RimuHostingClient.java @@ -19,6 +19,7 @@ package org.jclouds.rimuhosting.miro; import org.jclouds.concurrent.Timeout; +import org.jclouds.rimuhosting.miro.binder.CreateServerOptions; import org.jclouds.rimuhosting.miro.domain.*; import java.util.List; @@ -36,19 +37,59 @@ import java.util.concurrent.TimeUnit; @Timeout(duration = 40, timeUnit = TimeUnit.MINUTES) public interface RimuHostingClient { + /** + * This operation returns a list of images that can be used for server creation. + *c + * @see Image + */ SortedSet getImageList(); + /** + * Returns a list of servers that belong to this account. + * + * @return An empty set if there are no servers. + * @see Server + */ SortedSet getServerList(); + /** + * Returns a list of pricing plans that can be used for server creation. + * @see PricingPlan + */ SortedSet getPricingPlanList(); - NewServerResponse createServer(String name, String imageId, String planId); - - NewServerResponse createServer(String name, String imageId, String planId, String password); + /** + * This operation creates a node based on its name, imageId and planId. + * + * A password can be specified with the option {@link CreateServerOptions#withPassword(String) | withPassword()} + * + * Key-Value @{link {@link MetaData | metadata} can be included with the option {@link CreateServerOptions#withMetaData(List) | withMetaData()} + * + * @see CreateServerOptions + * + * TODO: add more CreateServerOptions + */ + NewServerResponse createServer(String name, String imageId, String planId, CreateServerOptions ... options); + /** + * Gets a server based on its id. + * + * @return null if server id is invalid. + * @see Server + */ Server getServer(Long id); + /** + * Restarts a server. + * + * @return State of the server. + */ ServerInfo restartServer(Long id); + /** + * Destroys a server. This an async operation. + * + * @return A list of messages that have something to do with the shutdown. Can ignore safely. + */ List destroyServer(Long id); } diff --git a/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/binder/RimuHostingCreateInstanceBinder.java b/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/binder/CreateServerOptions.java similarity index 75% rename from rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/binder/RimuHostingCreateInstanceBinder.java rename to rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/binder/CreateServerOptions.java index ff9872f7ee..d375d1dfd1 100644 --- a/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/binder/RimuHostingCreateInstanceBinder.java +++ b/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/binder/CreateServerOptions.java @@ -21,6 +21,7 @@ package org.jclouds.rimuhosting.miro.binder; import static com.google.common.base.Preconditions.checkNotNull; import java.util.ArrayList; +import java.util.List; import java.util.Map; import org.jclouds.http.HttpRequest; @@ -31,15 +32,30 @@ import org.jclouds.rimuhosting.miro.domain.MetaData; /** * @author Ivan Meredith */ -public class RimuHostingCreateInstanceBinder extends RimuHostingJsonBinder{ +public class CreateServerOptions extends RimuHostingJsonBinder{ + + private String password; + private List metaData = new ArrayList(); + + @Override public void bindToRequest(HttpRequest request, Map postParams) { String name = checkNotNull(postParams.get("name")); String imageId = checkNotNull(postParams.get("imageId")); String planId = checkNotNull(postParams.get("planId")); //There will be cases when the password is null. - String password = postParams.get("password"); + String password = this.password; NewServerData newServerData = new NewServerData(new CreateOptions(name, password, imageId), planId); - newServerData.setMetaData(new ArrayList()); + newServerData.setMetaData(metaData); bindToRequest(request, newServerData); } + + public CreateServerOptions withPassword(String password){ + this.password = password; + return this; + } + + public CreateServerOptions withMetaData(List metaData){ + this.metaData = metaData; + return this; + } } diff --git a/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/domain/Server.java b/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/domain/Server.java index dc193596ed..c15f48d1d8 100644 --- a/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/domain/Server.java +++ b/rimuhosting/src/main/java/org/jclouds/rimuhosting/miro/domain/Server.java @@ -18,6 +18,8 @@ */ package org.jclouds.rimuhosting.miro.domain; +import java.util.List; + import com.google.gson.annotations.SerializedName; import org.jclouds.rimuhosting.miro.data.NewServerData; import org.jclouds.rimuhosting.miro.domain.internal.RunningState; @@ -30,11 +32,8 @@ import org.jclouds.rimuhosting.miro.domain.internal.RunningState; */ public class Server implements Comparable { - @SerializedName("allocated_ips") private IpAddresses ipAddresses; -// @SerializedName("billing_info") -// private BillingData billingData; @SerializedName("billing_oid") private Long billingId; @SerializedName("data_transfer_allowance") @@ -59,7 +58,9 @@ public class Server implements Comparable { private ServerParameters serverParameters; private DataCenter location; - + + @SerializedName("meta_data") + private List metaData; //Object returned back with private transient NewServerData serverDataRequest; @@ -72,14 +73,6 @@ public class Server implements Comparable { this.ipAddresses = ipAddresses; } -// public BillingData getBillingData() { -// return billingData; -// } -// -// public void setBillingData(BillingData billingData) { -// this.billingData = billingData; -// } - public Long getBillingId() { return billingId; } @@ -188,4 +181,12 @@ public class Server implements Comparable { public DataCenter getLocation() { return location; } + + public void setMetaData(List metaData) { + this.metaData = metaData; + } + + public List getMetaData() { + return metaData; + } }