mirror of https://github.com/apache/jclouds.git
changed InstanceType to string (from enum)
This commit is contained in:
commit
2cc949ad49
|
@ -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<Architecture> supportedArchitectures) {
|
||||
super(instanceType.toString(), instanceType.toString(), null, null, ImmutableMap
|
||||
.<String, String> of(),cores, ram, disk, supportedArchitectures);
|
||||
super(instanceType,
|
||||
instanceType, null, null,
|
||||
ImmutableMap.<String, String> 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<Architecture> 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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
* <ul>
|
||||
|
@ -43,7 +43,7 @@ public enum InstanceType {
|
|||
* <li>I/O Performance: Moderate</li>
|
||||
* </ul>
|
||||
*/
|
||||
M1_SMALL,
|
||||
public static final String M1_SMALL = "m1.small";
|
||||
/**
|
||||
* Large Instance
|
||||
* <ul>
|
||||
|
@ -54,7 +54,7 @@ public enum InstanceType {
|
|||
* <li>I/O Performance: High</li>
|
||||
* </ul>
|
||||
*/
|
||||
M1_LARGE,
|
||||
public static final String M1_LARGE = "m1.large";
|
||||
/**
|
||||
* Extra Large Instance
|
||||
* <ul>
|
||||
|
@ -65,7 +65,7 @@ public enum InstanceType {
|
|||
* <li>I/O Performance: High</li>
|
||||
* </ul>
|
||||
*/
|
||||
M1_XLARGE,
|
||||
public static final String M1_XLARGE = "m1.xlarge";
|
||||
/**
|
||||
* High-Memory Extra Large Instance
|
||||
* <ul>
|
||||
|
@ -76,7 +76,7 @@ public enum InstanceType {
|
|||
* <li>I/O Performance: Moderate</li>
|
||||
* </ul>
|
||||
*/
|
||||
M2_XLARGE,
|
||||
public static final String M2_XLARGE = "m2.xlarge";
|
||||
/**
|
||||
* High-Memory Double Extra Large Instance
|
||||
* <ul>
|
||||
|
@ -87,7 +87,7 @@ public enum InstanceType {
|
|||
* <li>I/O Performance: High</li>
|
||||
* </ul>
|
||||
*/
|
||||
M2_2XLARGE,
|
||||
public static final String M2_2XLARGE = "m2.2xlarge";
|
||||
/**
|
||||
* High-Memory Quadruple Extra Large Instance
|
||||
* <ul>
|
||||
|
@ -98,7 +98,7 @@ public enum InstanceType {
|
|||
* <li>I/O Performance: High</li>
|
||||
* </ul>
|
||||
*/
|
||||
M2_4XLARGE,
|
||||
public static final String M2_4XLARGE = "m2.4xlarge";
|
||||
/**
|
||||
* High-CPU Medium Instance
|
||||
* <ul>
|
||||
|
@ -109,7 +109,7 @@ public enum InstanceType {
|
|||
* <li>I/O Performance: Moderate</li>
|
||||
* </ul>
|
||||
*/
|
||||
C1_MEDIUM,
|
||||
public static final String C1_MEDIUM = "c1.medium";
|
||||
/**
|
||||
* High-CPU Extra Large Instance
|
||||
* <ul>
|
||||
|
@ -120,18 +120,14 @@ public enum InstanceType {
|
|||
* <li>I/O Performance: High</li>
|
||||
* </ul>
|
||||
*/
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
|
@ -123,7 +123,7 @@ public class RunningInstance implements Comparable<RunningInstance> {
|
|||
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<RunningInstance> {
|
|||
|
||||
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<RunningInstance> {
|
|||
/**
|
||||
* The instance type.
|
||||
*/
|
||||
public InstanceType getInstanceType() {
|
||||
public String getInstanceType() {
|
||||
return instanceType;
|
||||
}
|
||||
|
||||
|
|
|
@ -45,10 +45,10 @@ public class RunningInstanceToStorageMappingUnix implements Function<RunningInst
|
|||
|
||||
@Override
|
||||
public Map<String, String> apply(RunningInstance instance) {
|
||||
final InstanceType instanceType = instance.getInstanceType();
|
||||
final String instanceType = instance.getInstanceType();
|
||||
|
||||
Map<String, String> 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<RunningInst
|
|||
* @see <a href="http://docs.amazonwebservices.com/AWSEC2/2009-11-30/UserGuide/index.html?instance-storage-concepts.html" />
|
||||
* @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?instance-types.html" />
|
||||
*/
|
||||
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<RunningInst
|
|||
* @param instanceType for which the primary partition size is to be determined
|
||||
* @return size in GB
|
||||
*/
|
||||
public static int getPrimaryPartitionSizeForInstanceType(InstanceType instanceType) {
|
||||
switch(instanceType) {
|
||||
case M1_SMALL:
|
||||
return 150;
|
||||
|
||||
case M1_LARGE:
|
||||
return 420;
|
||||
|
||||
case M1_XLARGE:
|
||||
return 420;
|
||||
|
||||
case C1_MEDIUM:
|
||||
return 340;
|
||||
|
||||
case C1_XLARGE:
|
||||
return 420;
|
||||
|
||||
case M2_XLARGE:
|
||||
return 420;
|
||||
|
||||
case M2_2XLARGE:
|
||||
return 840;
|
||||
|
||||
case M2_4XLARGE:
|
||||
return 840;
|
||||
}
|
||||
public static int getPrimaryPartitionSizeForInstanceType(String instanceType) {
|
||||
if(InstanceType.M1_SMALL.equals(instanceType)) {
|
||||
return 150;
|
||||
} else if (InstanceType.M1_LARGE.equals(instanceType)) {
|
||||
return 420;
|
||||
} else if (InstanceType.M1_XLARGE.equals(instanceType)) {
|
||||
return 420;
|
||||
} else if (InstanceType.C1_MEDIUM.equals(instanceType)) {
|
||||
return 340;
|
||||
} else if (InstanceType.C1_XLARGE.equals(instanceType)) {
|
||||
return 420;
|
||||
} else if (InstanceType.M2_XLARGE.equals(instanceType)) {
|
||||
return 420;
|
||||
} else if (InstanceType.M2_2XLARGE.equals(instanceType)) {
|
||||
return 840;
|
||||
} else if (InstanceType.M2_4XLARGE.equals(instanceType))
|
||||
return 840;
|
||||
throw new RuntimeException("Unknown instance type");
|
||||
}
|
||||
|
||||
|
@ -144,34 +135,30 @@ public class RunningInstanceToStorageMappingUnix implements Function<RunningInst
|
|||
*
|
||||
* @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?concepts-amis-and-instances.html#instance-types" />
|
||||
*/
|
||||
public static Map<String, Integer> getAdditionalPartitionsMapping(InstanceType instanceType) {
|
||||
public static Map<String, Integer> getAdditionalPartitionsMapping(String instanceType) {
|
||||
Map<String, Integer> 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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -202,7 +202,7 @@ public interface InstanceAsyncClient {
|
|||
@FormParams(keys = { ACTION, "Attribute" }, values = { "DescribeInstanceAttribute",
|
||||
"instanceType" })
|
||||
@XMLResponseParser(InstanceTypeHandler.class)
|
||||
ListenableFuture<InstanceType> getInstanceTypeForInstanceInRegion(
|
||||
ListenableFuture<String> getInstanceTypeForInstanceInRegion(
|
||||
@EndpointParam(parser = RegionToEndpoint.class) @Nullable Region region,
|
||||
@FormParam("InstanceId") String instanceId);
|
||||
|
||||
|
@ -302,7 +302,7 @@ public interface InstanceAsyncClient {
|
|||
ListenableFuture<Void> setInstanceTypeForInstanceInRegion(
|
||||
@EndpointParam(parser = RegionToEndpoint.class) @Nullable Region region,
|
||||
@FormParam("InstanceId") String instanceId,
|
||||
@FormParam("Value") InstanceType instanceType);
|
||||
@FormParam("Value") String instanceType);
|
||||
|
||||
/**
|
||||
* @see AMIClient#setInstanceInitiatedShutdownBehaviorForInstanceInRegion
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -75,7 +75,7 @@ public abstract class BaseReservationHandler<T> extends HandlerWithResult<T> {
|
|||
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<T> extends HandlerWithResult<T> {
|
|||
} 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")) {
|
||||
|
|
|
@ -28,18 +28,18 @@ import org.jclouds.http.functions.ParseSax;
|
|||
* @author Adrian Cole
|
||||
*/
|
||||
public class InstanceTypeHandler extends
|
||||
ParseSax.HandlerWithResult<InstanceType> {
|
||||
ParseSax.HandlerWithResult<String> {
|
||||
|
||||
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();
|
||||
}
|
||||
|
|
|
@ -463,7 +463,7 @@ public class InstanceAsyncClientTest extends BaseEC2AsyncClientTest<InstanceAsyn
|
|||
public void testSetInstanceTypeForInstanceInRegion() throws SecurityException,
|
||||
NoSuchMethodException, IOException {
|
||||
Method method = InstanceAsyncClient.class.getMethod("setInstanceTypeForInstanceInRegion",
|
||||
Region.class, String.class, InstanceType.class);
|
||||
Region.class, String.class, String.class);
|
||||
GeneratedHttpRequest<InstanceAsyncClient> httpMethod = processor.createRequest(method, null,
|
||||
"1", InstanceType.C1_MEDIUM);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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<SortedSet<Image>> 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<SortedSet<Server>> 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<SortedSet<PricingPlan>> 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<NewServerResponse> 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<NewServerResponse> 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<ServerInfo> 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<Server> 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<ServerInfo> restartServer(@PathParam("id") Long id);
|
||||
|
||||
/**
|
||||
* @see RimuHostingClient#destoryServer
|
||||
*/
|
||||
@DELETE
|
||||
@Path("/orders/order-{id}-blah/vps")
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
|
|
|
@ -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<Image> getImageList();
|
||||
|
||||
/**
|
||||
* Returns a list of servers that belong to this account.
|
||||
*
|
||||
* @return An empty set if there are no servers.
|
||||
* @see Server
|
||||
*/
|
||||
SortedSet<Server> getServerList();
|
||||
|
||||
/**
|
||||
* Returns a list of pricing plans that can be used for server creation.
|
||||
* @see PricingPlan
|
||||
*/
|
||||
SortedSet<PricingPlan> 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<String> destroyServer(Long id);
|
||||
}
|
||||
|
|
|
@ -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> metaData = new ArrayList<MetaData>();
|
||||
|
||||
@Override
|
||||
public void bindToRequest(HttpRequest request, Map<String, String> 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<MetaData>());
|
||||
newServerData.setMetaData(metaData);
|
||||
bindToRequest(request, newServerData);
|
||||
}
|
||||
|
||||
public CreateServerOptions withPassword(String password){
|
||||
this.password = password;
|
||||
return this;
|
||||
}
|
||||
|
||||
public CreateServerOptions withMetaData(List<MetaData> metaData){
|
||||
this.metaData = metaData;
|
||||
return this;
|
||||
}
|
||||
}
|
|
@ -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<Server> {
|
||||
|
||||
|
||||
@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<Server> {
|
|||
private ServerParameters serverParameters;
|
||||
|
||||
private DataCenter location;
|
||||
|
||||
|
||||
@SerializedName("meta_data")
|
||||
private List<MetaData> metaData;
|
||||
//Object returned back with
|
||||
private transient NewServerData serverDataRequest;
|
||||
|
||||
|
@ -72,14 +73,6 @@ public class Server implements Comparable<Server> {
|
|||
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<Server> {
|
|||
public DataCenter getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
public void setMetaData(List<MetaData> metaData) {
|
||||
this.metaData = metaData;
|
||||
}
|
||||
|
||||
public List<MetaData> getMetaData() {
|
||||
return metaData;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue