Added more images to ec2

git-svn-id: http://jclouds.googlecode.com/svn/trunk@2673 3d8758e0-26b5-11de-8745-db77d3ebf521
This commit is contained in:
adrian.f.cole 2010-01-19 11:18:41 +00:00
parent 35b2043e95
commit e38f58902c
3 changed files with 40 additions and 18 deletions

View File

@ -62,6 +62,7 @@ import org.jclouds.scriptbuilder.ScriptBuilder;
import org.jclouds.scriptbuilder.domain.OsFamily; import org.jclouds.scriptbuilder.domain.OsFamily;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
@ -88,17 +89,31 @@ public class EC2ComputeService implements ComputeService {
this.runningInstanceToNodeMetadata = runningInstanceToNodeMetadata; this.runningInstanceToNodeMetadata = runningInstanceToNodeMetadata;
} }
// TODO: handle regions private Map<InstanceType, Map<Image, Map<Region, String>>> imageAmiIdMap = ImmutableMap
private Map<InstanceType, Map<Image, String>> imageAmiIdMap = ImmutableMap .<InstanceType, Map<Image, Map<Region, String>>> of(InstanceType.M1_SMALL,//
.<InstanceType, Map<Image, String>> of(InstanceType.M1_SMALL,// ImmutableMap.<Image, Map<Region, String>> builder().put(
ImmutableMap.<Image, String> builder().put(Image.UBUNTU_90, "ami-1515f67c") Image.UBUNTU_90,
.put(Image.RHEL_53, "ami-368b685f").build(),// ImmutableMap.of(Region.DEFAULT, "ami-1515f67c", Region.US_EAST_1,
"ami-1515f67c", Region.US_WEST_1, "ami-7d3c6d38",
Region.EU_WEST_1, "ami-a62a01d2")).put(
Image.RHEL_53,
ImmutableMap.of(Region.DEFAULT, "ami-368b685f", Region.US_EAST_1,
"ami-368b685f")).build(),//
InstanceType.C1_MEDIUM,// InstanceType.C1_MEDIUM,//
ImmutableMap.<Image, String> builder().put(Image.UBUNTU_90, "ami-1515f67c") ImmutableMap.<Image, Map<Region, String>> builder().put(
.put(Image.RHEL_53, "ami-368b685f").build(), // Image.UBUNTU_90,
ImmutableMap.of(Region.DEFAULT, "ami-1515f67c", Region.US_EAST_1,
"ami-1515f67c", Region.US_WEST_1, "ami-7d3c6d38",
Region.EU_WEST_1, "ami-a62a01d2")).put(
Image.RHEL_53,
ImmutableMap.of(Region.DEFAULT, "ami-368b685f", Region.US_EAST_1,
"ami-368b685f")).build(), //
InstanceType.C1_XLARGE,// InstanceType.C1_XLARGE,//
ImmutableMap.<Image, String> builder().put(Image.UBUNTU_90, "ami-ab15f6c2") ImmutableMap.<Image, Map<Region, String>> builder().put(
.build());// todo ami Image.UBUNTU_90,
ImmutableMap.of(Region.DEFAULT, "ami-ab15f6c2", Region.US_EAST_1,
"ami-ab15f6c2", Region.US_WEST_1, "ami-7b3c6d3e",
Region.EU_WEST_1, "ami-9a2a01ee")).build());// todo ami
private Map<Profile, InstanceType> profileInstanceTypeMap = ImmutableMap private Map<Profile, InstanceType> profileInstanceTypeMap = ImmutableMap
.<Profile, InstanceType> builder().put(Profile.SMALLEST, InstanceType.M1_SMALL).put( .<Profile, InstanceType> builder().put(Profile.SMALLEST, InstanceType.M1_SMALL).put(
@ -117,7 +132,9 @@ public class EC2ComputeService implements ComputeService {
InstanceType type = checkNotNull(profileInstanceTypeMap.get(profile), InstanceType type = checkNotNull(profileInstanceTypeMap.get(profile),
"profile not supported: " + profile); "profile not supported: " + profile);
String ami = checkNotNull(imageAmiIdMap.get(type).get(image), "image not supported: " + image); String ami = checkNotNull(checkNotNull(
checkNotNull(imageAmiIdMap.get(type), "type not supported: " + type).get(image),
"image not supported: " + image).get(region), "region not supported: " + region);
KeyPair keyPair = createKeyPairInRegion(region, name); KeyPair keyPair = createKeyPairInRegion(region, name);
String securityGroupName = name; String securityGroupName = name;
@ -131,8 +148,8 @@ public class EC2ComputeService implements ComputeService {
.addStatement(exec("chmod 755 /usr/bin/runurl"))// .addStatement(exec("chmod 755 /usr/bin/runurl"))//
.build(OsFamily.UNIX); .build(OsFamily.UNIX);
logger.debug(">> running instance ami(%s) type(%s) keyPair(%s) securityGroup(%s)", ami, type, logger.debug(">> running instance region(%s) ami(%s) type(%s) keyPair(%s) securityGroup(%s)",
keyPair.getKeyName(), securityGroupName); region, ami, type, keyPair.getKeyName(), securityGroupName);
RunningInstance runningInstance = Iterables.getOnlyElement(ec2Client.getInstanceServices() RunningInstance runningInstance = Iterables.getOnlyElement(ec2Client.getInstanceServices()
.runInstancesInRegion(region, null, ami, 1, 1, withKeyName(keyPair.getKeyName())// key .runInstancesInRegion(region, null, ami, 1, 1, withKeyName(keyPair.getKeyName())// key
@ -164,7 +181,7 @@ public class EC2ComputeService implements ComputeService {
} }
private KeyPair createKeyPairInRegion(Region region, String name) { private KeyPair createKeyPairInRegion(Region region, String name) {
logger.debug(">> creating keyPair name(%s)", name); logger.debug(">> creating keyPair region(%s) name(%s)", region, name);
KeyPair keyPair; KeyPair keyPair;
try { try {
keyPair = ec2Client.getKeyPairServices().createKeyPairInRegion(region, name); keyPair = ec2Client.getKeyPairServices().createKeyPairInRegion(region, name);
@ -184,13 +201,12 @@ public class EC2ComputeService implements ComputeService {
} }
private void createSecurityGroupInRegion(Region region, String name, int... ports) { private void createSecurityGroupInRegion(Region region, String name, int... ports) {
logger.debug(">> creating securityGroup name(%s)", name); logger.debug(">> creating securityGroup region(%s) name(%s)", region, name);
try { try {
ec2Client.getSecurityGroupServices().createSecurityGroupInRegion(region, name, name); ec2Client.getSecurityGroupServices().createSecurityGroupInRegion(region, name, name);
logger.debug("<< created securityGroup(%s)", name); logger.debug("<< created securityGroup(%s)", name);
logger logger.debug(">> authorizing securityGroup region(%s) name(%s) ports(%s)", region, name,
.debug(">> authorizing securityGroup name(%s) ports(%s)", name, Arrays Joiner.on(',').join(Arrays.asList(ports)));
.asList(ports));
for (int port : ports) { for (int port : ports) {
ec2Client.getSecurityGroupServices().authorizeSecurityGroupIngressInRegion(region, ec2Client.getSecurityGroupServices().authorizeSecurityGroupIngressInRegion(region,
name, IpProtocol.TCP, port, port, "0.0.0.0/0"); name, IpProtocol.TCP, port, port, "0.0.0.0/0");

View File

@ -134,4 +134,9 @@ public class TransformingHttpCommandImpl<T> implements TransformingHttpCommand<T
request.replacePath(newPath); request.replacePath(newPath);
} }
@Override
public String toString() {
return "TransformingHttpCommandImpl [request=" + request.getRequestLine() + "]";
}
} }

View File

@ -87,9 +87,10 @@
</compute> </compute>
</target> </target>
<property name="location" value="default" />
<target name="create" description="create the node ${nodename}"> <target name="create" description="create the node ${nodename}">
<compute action="create" provider="${jclouds.compute.url}"> <compute action="create" provider="${jclouds.compute.url}">
<node name="${nodename}" image="${image}" profile="SMALLEST" hostproperty="host" usernameproperty="username" passwordproperty="password" /> <node name="${nodename}" location="${location}" image="${image}" profile="FASTEST" hostproperty="host" usernameproperty="username" passwordproperty="password" />
</compute> </compute>
</target> </target>