cleaned ec2 instance type

This commit is contained in:
Adrian Cole 2012-09-15 14:05:13 -07:00
parent 7a3318d1ca
commit 0b31622267
17 changed files with 434 additions and 428 deletions

View File

@ -196,7 +196,7 @@ public class RunningInstanceToNodeMetadata implements Function<RunningInstance,
@VisibleForTesting @VisibleForTesting
String getGroupForInstance(final RunningInstance instance) { String getGroupForInstance(final RunningInstance instance) {
String group = parseGroupFrom(instance, instance.getGroupIds()); String group = parseGroupFrom(instance, instance.getGroupNames());
if(group == null && instance.getKeyName() != null) { if(group == null && instance.getKeyName() != null) {
// when not using a generated security group, e.g. in VPC, try from key: // when not using a generated security group, e.g. in VPC, try from key:
group = parseGroupFrom(instance, Sets.newHashSet(instance.getKeyName())); group = parseGroupFrom(instance, Sets.newHashSet(instance.getKeyName()));

View File

@ -20,27 +20,119 @@ package org.jclouds.ec2.domain;
import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
import org.jclouds.javax.annotation.Nullable; import org.jclouds.javax.annotation.Nullable;
import com.google.common.collect.Iterables; import com.google.common.base.Objects;
import com.google.common.collect.Sets; import com.google.common.collect.ComparisonChain;
import com.google.common.collect.ForwardingSet;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Ordering;
/** /**
* *
* @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-ItemType-ReservationInfoType.html" * @see <a href=
* "http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-ItemType-ReservationInfoType.html"
* /> * />
* @author Adrian Cole * @author Adrian Cole
*/ */
public class Reservation<T extends RunningInstance> extends LinkedHashSet<T> implements Comparable<Reservation<T>>, public class Reservation<T extends RunningInstance> extends ForwardingSet<T> implements Comparable<Reservation<T>>{
Set<T> {
public static <T extends RunningInstance> Builder<T> builder() {
return new Builder<T>();
}
public Builder<T> toBuilder() {
return Reservation.<T> builder().fromReservation(this);
}
public static class Builder<T extends RunningInstance> {
private String region;
private String ownerId;
private String requesterId;
private String reservationId;
private ImmutableSet.Builder<T> instances = ImmutableSet.<T> builder();
private ImmutableSet.Builder<String> groupNames = ImmutableSet.<String> builder();
/**
* @see Reservation#getRegion()
*/
public Builder<T> region(String region) {
this.region = region;
return this;
}
/**
* @see Reservation#getOwnerId()
*/
public Builder<T> ownerId(String ownerId) {
this.ownerId = ownerId;
return this;
}
/**
* @see Reservation#getRequesterId()
*/
public Builder<T> requesterId(String requesterId) {
this.requesterId = requesterId;
return this;
}
/**
* @see Reservation#getReservationId()
*/
public Builder<T> reservationId(String reservationId) {
this.reservationId = reservationId;
return this;
}
/**
* @see Reservation#iterator
*/
public Builder<T> instance(T instance) {
this.instances.add(checkNotNull(instance, "instance"));
return this;
}
/**
* @see Reservation#iterator
*/
public Builder<T> instances(Set<T> instances) {
this.instances.addAll(checkNotNull(instances, "instances"));
return this;
}
/**
* @see Reservation#getGroupNames()
*/
public Builder<T> groupName(String groupName) {
this.groupNames.add(checkNotNull(groupName, "groupName"));
return this;
}
/**
* @see Reservation#getGroupNames()
*/
public Builder<T> groupNames(Iterable<String> groupNames) {
this.groupNames = ImmutableSet.<String> builder().addAll(checkNotNull(groupNames, "groupNames"));
return this;
}
public Reservation<T> build() {
return new Reservation<T>(region, groupNames.build(), instances.build(), ownerId, requesterId, reservationId);
}
public Builder<T> fromReservation(Reservation<T> in) {
return region(in.region).ownerId(in.ownerId).requesterId(in.requesterId).reservationId(in.reservationId)
.instances(in).groupNames(in.groupNames);
}
}
/** The serialVersionUID */
private static final long serialVersionUID = -9051777593518861395L;
private final String region; private final String region;
private final Set<String> groupIds = Sets.newLinkedHashSet(); private final ImmutableSet<String> groupNames;
private final ImmutableSet<T> instances;
@Nullable @Nullable
private final String ownerId; private final String ownerId;
@Nullable @Nullable
@ -48,16 +140,21 @@ public class Reservation<T extends RunningInstance> extends LinkedHashSet<T> imp
@Nullable @Nullable
private final String reservationId; private final String reservationId;
public Reservation(String region, Iterable<String> groupIds, Iterable<T> instances, @Nullable String ownerId, public Reservation(String region, Iterable<String> groupNames, Iterable<T> instances, @Nullable String ownerId,
@Nullable String requesterId, @Nullable String reservationId) { @Nullable String requesterId, @Nullable String reservationId) {
this.region = checkNotNull(region, "region"); this.region = checkNotNull(region, "region");
Iterables.addAll(this.groupIds, checkNotNull(groupIds, "groupIds")); this.groupNames = ImmutableSet.copyOf(checkNotNull(groupNames, "groupNames"));
Iterables.addAll(this, checkNotNull(instances, "instances")); this.instances = ImmutableSet.copyOf(checkNotNull(instances, "instances"));
this.ownerId = ownerId; this.ownerId = ownerId;
this.requesterId = requesterId; this.requesterId = requesterId;
this.reservationId = reservationId; this.reservationId = reservationId;
} }
@Override
protected Set<T> delegate() {
return instances;
}
/** /**
* Instances are tied to Availability Zones. However, the instance ID is tied to the Region. * Instances are tied to Availability Zones. However, the instance ID is tied to the Region.
*/ */
@ -65,15 +162,19 @@ public class Reservation<T extends RunningInstance> extends LinkedHashSet<T> imp
return region; return region;
} }
public int compareTo(Reservation<T> o) { /**
return (this == o) ? 0 : getReservationId().compareTo(o.getReservationId()); * @see #getGroupNames()
*/
@Deprecated
public Set<String> getGroupIds() {
return groupNames;
} }
/** /**
* Names of the security groups. * Names of the security groups.
*/ */
public Set<String> getGroupIds() { public Set<String> getGroupNames() {
return groupIds; return groupNames;
} }
/** /**
@ -84,7 +185,8 @@ public class Reservation<T extends RunningInstance> extends LinkedHashSet<T> imp
} }
/** /**
* ID of the requester. * The ID of the requester that launched the instances on your behalf (for example, AWS
* Management Console or Auto Scaling).
*/ */
public String getRequesterId() { public String getRequesterId() {
return requesterId; return requesterId;
@ -99,51 +201,34 @@ public class Reservation<T extends RunningInstance> extends LinkedHashSet<T> imp
@Override @Override
public int hashCode() { public int hashCode() {
final int prime = 31; return Objects.hashCode(region, reservationId, super.hashCode());
int result = super.hashCode();
result = prime * result + ((groupIds == null) ? 0 : groupIds.hashCode());
result = prime * result + ((ownerId == null) ? 0 : ownerId.hashCode());
result = prime * result + ((region == null) ? 0 : region.hashCode());
result = prime * result + ((requesterId == null) ? 0 : requesterId.hashCode());
result = prime * result + ((reservationId == null) ? 0 : reservationId.hashCode());
return result;
} }
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (this == obj) if (this == obj)
return true; return true;
if (!super.equals(obj)) if (obj == null || getClass() != obj.getClass())
return false; return false;
if (getClass() != obj.getClass()) @SuppressWarnings("unchecked")
return false; Reservation<T> that = Reservation.class.cast(obj);
Reservation<?> other = (Reservation<?>) obj; return super.equals(that) && Objects.equal(this.region, that.region)
if (groupIds == null) { && Objects.equal(this.reservationId, that.reservationId);
if (other.groupIds != null) }
return false;
} else if (!groupIds.equals(other.groupIds)) /**
return false; * {@inheritDoc}
if (ownerId == null) { */
if (other.ownerId != null) @Override
return false; public String toString() {
} else if (!ownerId.equals(other.ownerId)) return Objects.toStringHelper(this).omitNullValues().add("region", region).add("reservationId", reservationId)
return false; .add("requesterId", requesterId).add("instances", instances).add("groupNames", groupNames).toString();
if (region == null) { }
if (other.region != null)
return false; @Override
} else if (!region.equals(other.region)) public int compareTo(Reservation<T> other) {
return false; return ComparisonChain.start().compare(region, other.region)
if (requesterId == null) { .compare(reservationId, other.reservationId, Ordering.natural().nullsLast()).result();
if (other.requesterId != null)
return false;
} else if (!requesterId.equals(other.requesterId))
return false;
if (reservationId == null) {
if (other.reservationId != null)
return false;
} else if (!reservationId.equals(other.reservationId))
return false;
return true;
} }
} }

View File

@ -26,9 +26,13 @@ import java.util.Set;
import org.jclouds.javax.annotation.Nullable; import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Ordering;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
/** /**
@ -44,7 +48,7 @@ public class RunningInstance implements Comparable<RunningInstance> {
public static class Builder { public static class Builder {
protected String region; protected String region;
protected Set<String> groupIds = Sets.newLinkedHashSet(); protected Set<String> groupNames = Sets.newLinkedHashSet();
protected String amiLaunchIndex; protected String amiLaunchIndex;
protected String dnsName; protected String dnsName;
protected String imageId; protected String imageId;
@ -72,14 +76,14 @@ public class RunningInstance implements Comparable<RunningInstance> {
return this; return this;
} }
public Builder groupIds(Iterable<String> groupIds) { public Builder groupNames(Iterable<String> groupNames) {
this.groupIds = ImmutableSet.copyOf(checkNotNull(groupIds, "groupIds")); this.groupNames = ImmutableSet.copyOf(checkNotNull(groupNames, "groupNames"));
return this; return this;
} }
public Builder groupId(String groupId) { public Builder groupName(String groupName) {
if (groupId != null) if (groupName != null)
this.groupIds.add(groupId); this.groupNames.add(groupName);
return this; return this;
} }
@ -195,7 +199,7 @@ public class RunningInstance implements Comparable<RunningInstance> {
} }
public RunningInstance build() { public RunningInstance build() {
return new RunningInstance(region, groupIds, amiLaunchIndex, dnsName, imageId, instanceId, instanceState, return new RunningInstance(region, groupNames, amiLaunchIndex, dnsName, imageId, instanceId, instanceState,
rawState, instanceType, ipAddress, kernelId, keyName, launchTime, availabilityZone, rawState, instanceType, ipAddress, kernelId, keyName, launchTime, availabilityZone,
virtualizationType, platform, privateDnsName, privateIpAddress, ramdiskId, reason, rootDeviceType, virtualizationType, platform, privateDnsName, privateIpAddress, ramdiskId, reason, rootDeviceType,
rootDeviceName, ebsBlockDevices); rootDeviceName, ebsBlockDevices);
@ -220,7 +224,7 @@ public class RunningInstance implements Comparable<RunningInstance> {
} }
protected final String region; protected final String region;
protected final Set<String> groupIds; protected final Set<String> groupNames;
protected final String amiLaunchIndex; protected final String amiLaunchIndex;
@Nullable @Nullable
protected final String dnsName; protected final String dnsName;
@ -253,11 +257,7 @@ public class RunningInstance implements Comparable<RunningInstance> {
protected final String rootDeviceName; protected final String rootDeviceName;
protected final Map<String, BlockDevice> ebsBlockDevices; protected final Map<String, BlockDevice> ebsBlockDevices;
public int compareTo(RunningInstance o) { protected RunningInstance(String region, Iterable<String> groupNames, @Nullable String amiLaunchIndex,
return (this == o) ? 0 : getId().compareTo(o.getId());
}
protected RunningInstance(String region, Iterable<String> groupIds, @Nullable String amiLaunchIndex,
@Nullable String dnsName, String imageId, String instanceId, InstanceState instanceState, String rawState, @Nullable String dnsName, String imageId, String instanceId, InstanceState instanceState, String rawState,
String instanceType, @Nullable String ipAddress, @Nullable String kernelId, @Nullable String keyName, String instanceType, @Nullable String ipAddress, @Nullable String kernelId, @Nullable String keyName,
Date launchTime, String availabilityZone, String virtualizationType, @Nullable String platform, Date launchTime, String availabilityZone, String virtualizationType, @Nullable String platform,
@ -286,7 +286,7 @@ public class RunningInstance implements Comparable<RunningInstance> {
this.rootDeviceType = checkNotNull(rootDeviceType, "rootDeviceType for %s/%s", region, instanceId); this.rootDeviceType = checkNotNull(rootDeviceType, "rootDeviceType for %s/%s", region, instanceId);
this.rootDeviceName = rootDeviceName; this.rootDeviceName = rootDeviceName;
this.ebsBlockDevices = ImmutableMap.copyOf(checkNotNull(ebsBlockDevices, "ebsBlockDevices for %s/%s", region, instanceId)); this.ebsBlockDevices = ImmutableMap.copyOf(checkNotNull(ebsBlockDevices, "ebsBlockDevices for %s/%s", region, instanceId));
this.groupIds = ImmutableSet.copyOf(checkNotNull(groupIds, "groupIds for %s/%s", region, instanceId)); this.groupNames = ImmutableSet.copyOf(checkNotNull(groupNames, "groupNames for %s/%s", region, instanceId));
} }
/** /**
@ -443,160 +443,55 @@ public class RunningInstance implements Comparable<RunningInstance> {
return ebsBlockDevices; return ebsBlockDevices;
} }
/**
* @see #getGroupNames()
*/
@Deprecated
public Set<String> getGroupIds() {
return getGroupNames();
}
/** /**
* Names of the security groups. * Names of the security groups.
*/ */
public Set<String> getGroupIds() { public Set<String> getGroupNames() {
return groupIds; return groupNames;
} }
@Override
public int compareTo(RunningInstance other) {
return ComparisonChain.start().compare(region, other.region).compare(instanceId, other.instanceId, Ordering.natural().nullsLast()).result();
}
@Override @Override
public int hashCode() { public int hashCode() {
final int prime = 31; return Objects.hashCode(region, instanceId);
int result = 1;
result = prime * result + ((amiLaunchIndex == null) ? 0 : amiLaunchIndex.hashCode());
result = prime * result + ((availabilityZone == null) ? 0 : availabilityZone.hashCode());
result = prime * result + ((dnsName == null) ? 0 : dnsName.hashCode());
result = prime * result + ((ebsBlockDevices == null) ? 0 : ebsBlockDevices.hashCode());
result = prime * result + ((groupIds == null) ? 0 : groupIds.hashCode());
result = prime * result + ((imageId == null) ? 0 : imageId.hashCode());
result = prime * result + ((instanceId == null) ? 0 : instanceId.hashCode());
result = prime * result + ((instanceType == null) ? 0 : instanceType.hashCode());
result = prime * result + ((ipAddress == null) ? 0 : ipAddress.hashCode());
result = prime * result + ((kernelId == null) ? 0 : kernelId.hashCode());
result = prime * result + ((keyName == null) ? 0 : keyName.hashCode());
result = prime * result + ((launchTime == null) ? 0 : launchTime.hashCode());
result = prime * result + ((platform == null) ? 0 : platform.hashCode());
result = prime * result + ((privateDnsName == null) ? 0 : privateDnsName.hashCode());
result = prime * result + ((privateIpAddress == null) ? 0 : privateIpAddress.hashCode());
result = prime * result + ((ramdiskId == null) ? 0 : ramdiskId.hashCode());
result = prime * result + ((region == null) ? 0 : region.hashCode());
result = prime * result + ((rootDeviceName == null) ? 0 : rootDeviceName.hashCode());
result = prime * result + ((rootDeviceType == null) ? 0 : rootDeviceType.hashCode());
result = prime * result + ((virtualizationType == null) ? 0 : virtualizationType.hashCode());
return result;
} }
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (this == obj) if (this == obj)
return true; return true;
if (obj == null) if (obj == null || getClass() != obj.getClass())
return false; return false;
if (getClass() != obj.getClass()) RunningInstance that = RunningInstance.class.cast(obj);
return false; return Objects.equal(this.region, that.region) && Objects.equal(this.instanceId, that.instanceId);
RunningInstance other = (RunningInstance) obj; }
if (amiLaunchIndex == null) {
if (other.amiLaunchIndex != null) protected ToStringHelper string() {
return false; return Objects.toStringHelper(this).omitNullValues().add("region", region)
} else if (!amiLaunchIndex.equals(other.amiLaunchIndex)) .add("availabilityZone", availabilityZone).add("id", instanceId).add("state", rawState)
return false; .add("type", instanceType).add("virtualizationType", virtualizationType).add("imageId", imageId)
if (availabilityZone == null) { .add("ipAddress", ipAddress).add("dnsName", dnsName).add("privateIpAddress", privateIpAddress)
if (other.availabilityZone != null) .add("privateDnsName", privateDnsName).add("keyName", keyName).add("groupNames", groupNames)
return false; .add("platform", platform).add("launchTime", launchTime).add("rootDeviceName", rootDeviceName)
} else if (!availabilityZone.equals(other.availabilityZone)) .add("rootDeviceType", rootDeviceType).add("ebsBlockDevices", ebsBlockDevices);
return false;
if (dnsName == null) {
if (other.dnsName != null)
return false;
} else if (!dnsName.equals(other.dnsName))
return false;
if (ebsBlockDevices == null) {
if (other.ebsBlockDevices != null)
return false;
} else if (!ebsBlockDevices.equals(other.ebsBlockDevices))
return false;
if (groupIds == null) {
if (other.groupIds != null)
return false;
} else if (!groupIds.equals(other.groupIds))
return false;
if (imageId == null) {
if (other.imageId != null)
return false;
} else if (!imageId.equals(other.imageId))
return false;
if (instanceId == null) {
if (other.instanceId != null)
return false;
} else if (!instanceId.equals(other.instanceId))
return false;
if (instanceType == null) {
if (other.instanceType != null)
return false;
} else if (!instanceType.equals(other.instanceType))
return false;
if (ipAddress == null) {
if (other.ipAddress != null)
return false;
} else if (!ipAddress.equals(other.ipAddress))
return false;
if (kernelId == null) {
if (other.kernelId != null)
return false;
} else if (!kernelId.equals(other.kernelId))
return false;
if (keyName == null) {
if (other.keyName != null)
return false;
} else if (!keyName.equals(other.keyName))
return false;
if (launchTime == null) {
if (other.launchTime != null)
return false;
} else if (!launchTime.equals(other.launchTime))
return false;
if (platform == null) {
if (other.platform != null)
return false;
} else if (!platform.equals(other.platform))
return false;
if (privateDnsName == null) {
if (other.privateDnsName != null)
return false;
} else if (!privateDnsName.equals(other.privateDnsName))
return false;
if (privateIpAddress == null) {
if (other.privateIpAddress != null)
return false;
} else if (!privateIpAddress.equals(other.privateIpAddress))
return false;
if (ramdiskId == null) {
if (other.ramdiskId != null)
return false;
} else if (!ramdiskId.equals(other.ramdiskId))
return false;
if (region == null) {
if (other.region != null)
return false;
} else if (!region.equals(other.region))
return false;
if (rootDeviceName == null) {
if (other.rootDeviceName != null)
return false;
} else if (!rootDeviceName.equals(other.rootDeviceName))
return false;
if (rootDeviceType == null) {
if (other.rootDeviceType != null)
return false;
} else if (!rootDeviceType.equals(other.rootDeviceType))
return false;
if (virtualizationType == null) {
if (other.virtualizationType != null)
return false;
} else if (!virtualizationType.equals(other.virtualizationType))
return false;
return true;
} }
@Override @Override
public String toString() { public String toString() {
return "[region=" + region + ", availabilityZone=" + availabilityZone + ", instanceId=" + instanceId return string().toString();
+ ", instanceState=" + rawState + ", instanceType=" + instanceType + ", virtualizationType="
+ virtualizationType + ", imageId=" + imageId + ", ipAddress=" + ipAddress + ", dnsName=" + dnsName
+ ", privateIpAddress=" + privateIpAddress + ", privateDnsName=" + privateDnsName + ", keyName="
+ keyName + ", groupIds=" + groupIds + ", platform=" + platform + ", launchTime=" + launchTime + ", rootDeviceName="
+ rootDeviceName + ", rootDeviceType=" + rootDeviceType + ", ebsBlockDevices=" + ebsBlockDevices + "]";
} }
} }

View File

@ -80,7 +80,7 @@ public abstract class BaseReservationHandler<T> extends HandlerForGeneratedReque
private String deviceName; private String deviceName;
// reservation stuff // reservation stuff
private Set<String> groupIds = Sets.newLinkedHashSet(); private Set<String> groupNames = Sets.newLinkedHashSet();
private String ownerId; private String ownerId;
private String requesterId; private String requesterId;
private String reservationId; private String reservationId;
@ -111,7 +111,7 @@ public abstract class BaseReservationHandler<T> extends HandlerForGeneratedReque
} else if (equalsOrSuffix(qName, "groupSet")) { } else if (equalsOrSuffix(qName, "groupSet")) {
inGroupSet = false; inGroupSet = false;
} else if (equalsOrSuffix(qName, "groupId")) { } else if (equalsOrSuffix(qName, "groupId")) {
groupIds.add(currentOrNull(currentText)); groupNames.add(currentOrNull(currentText));
} else if (equalsOrSuffix(qName, "ownerId")) { } else if (equalsOrSuffix(qName, "ownerId")) {
ownerId = currentOrNull(currentText); ownerId = currentOrNull(currentText);
} else if (equalsOrSuffix(qName, "requesterId")) { } else if (equalsOrSuffix(qName, "requesterId")) {
@ -210,7 +210,7 @@ public abstract class BaseReservationHandler<T> extends HandlerForGeneratedReque
} }
builder.region((region == null) ? defaultRegion.get() : region); builder.region((region == null) ? defaultRegion.get() : region);
builder.groupIds(groupIds); builder.groupNames(groupNames);
} }
protected Builder builder() { protected Builder builder() {
@ -229,9 +229,9 @@ public abstract class BaseReservationHandler<T> extends HandlerForGeneratedReque
String region = getRequest() != null ? AWSUtils.findRegionInArgsOrNull(getRequest()) : null; String region = getRequest() != null ? AWSUtils.findRegionInArgsOrNull(getRequest()) : null;
if (region == null) if (region == null)
region = defaultRegion.get(); region = defaultRegion.get();
Reservation<? extends RunningInstance> info = new Reservation<RunningInstance>(region, groupIds, instances, Reservation<? extends RunningInstance> info = new Reservation<RunningInstance>(region, groupNames, instances,
ownerId, requesterId, reservationId); ownerId, requesterId, reservationId);
this.groupIds = Sets.newLinkedHashSet(); this.groupNames = Sets.newLinkedHashSet();
this.instances = Sets.newLinkedHashSet(); this.instances = Sets.newLinkedHashSet();
this.ownerId = null; this.ownerId = null;
this.requesterId = null; this.requesterId = null;

View File

@ -151,7 +151,7 @@ public class EC2ComputeServiceLiveTest extends BaseComputeServiceLiveTest {
assertEquals(instance.getKeyName(), group); assertEquals(instance.getKeyName(), group);
// make sure we made our dummy group and also let in the user's group // make sure we made our dummy group and also let in the user's group
assertEquals(Sets.newTreeSet(instance.getGroupIds()), ImmutableSortedSet.<String> of("jclouds#" + group + "#" assertEquals(Sets.newTreeSet(instance.getGroupNames()), ImmutableSortedSet.<String> of("jclouds#" + group + "#"
+ instance.getRegion(), group)); + instance.getRegion(), group));
// make sure our dummy group has no rules // make sure our dummy group has no rules

View File

@ -241,13 +241,13 @@ public class RunningInstanceToNodeMetadataTest {
public void testGroupNameIsSetWhenCustomKeyNameIsSetAndSecurityGroupIsGenerated() { public void testGroupNameIsSetWhenCustomKeyNameIsSetAndSecurityGroupIsGenerated() {
checkGroupName(RunningInstance.builder().instanceId("id").imageId("image").instanceType("m1.small") checkGroupName(RunningInstance.builder().instanceId("id").imageId("image").instanceType("m1.small")
.instanceState(InstanceState.RUNNING).rawState("running").region("us-east-1").keyName("custom-key") .instanceState(InstanceState.RUNNING).rawState("running").region("us-east-1").keyName("custom-key")
.groupId("jclouds#groupname").build()); .groupName("jclouds#groupname").build());
} }
@Test @Test
public void testGroupNameIsSetWhenCustomSecurityGroupIsSetAndKeyNameIsGenerated() { public void testGroupNameIsSetWhenCustomSecurityGroupIsSetAndKeyNameIsGenerated() {
checkGroupName(RunningInstance.builder().instanceId("id").imageId("image").instanceType("m1.small") checkGroupName(RunningInstance.builder().instanceId("id").imageId("image").instanceType("m1.small")
.instanceState(InstanceState.RUNNING).rawState("running").region("us-east-1").groupId("custom-sec") .instanceState(InstanceState.RUNNING).rawState("running").region("us-east-1").groupName("custom-sec")
.keyName("jclouds#groupname#23").build()); .keyName("jclouds#groupname#23").build());
} }

View File

@ -70,7 +70,7 @@ public class DescribeInstancesResponseHandlerTest extends BaseEC2HandlerTest {
Set<Reservation<RunningInstance>> contents = ImmutableSet.of(new Reservation<RunningInstance>(defaultRegion, Set<Reservation<RunningInstance>> contents = ImmutableSet.of(new Reservation<RunningInstance>(defaultRegion,
ImmutableSet.of("adriancole.ec2ingress"), ImmutableSet.of(new RunningInstance.Builder().region( ImmutableSet.of("adriancole.ec2ingress"), ImmutableSet.of(new RunningInstance.Builder().region(
defaultRegion).groupId("adriancole.ec2ingress").amiLaunchIndex("0").dnsName( defaultRegion).groupName("adriancole.ec2ingress").amiLaunchIndex("0").dnsName(
"ec2-174-129-81-68.compute-1.amazonaws.com").imageId("ami-82e4b5c7").instanceId("i-0799056f") "ec2-174-129-81-68.compute-1.amazonaws.com").imageId("ami-82e4b5c7").instanceId("i-0799056f")
.instanceState(InstanceState.RUNNING).rawState("running").instanceType(InstanceType.M1_SMALL) .instanceState(InstanceState.RUNNING).rawState("running").instanceType(InstanceType.M1_SMALL)
.ipAddress("174.129.81.68").kernelId("aki-a71cf9ce").keyName("adriancole.ec21").launchTime( .ipAddress("174.129.81.68").kernelId("aki-a71cf9ce").keyName("adriancole.ec21").launchTime(
@ -83,7 +83,7 @@ public class DescribeInstancesResponseHandlerTest extends BaseEC2HandlerTest {
Set<Reservation<? extends RunningInstance>> result = parseRunningInstances("/describe_instances_running.xml"); Set<Reservation<? extends RunningInstance>> result = parseRunningInstances("/describe_instances_running.xml");
assertEquals(result, contents); assertEquals(result.toString(), contents.toString());
assertEquals(get(get(result, 0), 0).getInstanceState(), InstanceState.RUNNING); assertEquals(get(get(result, 0), 0).getInstanceState(), InstanceState.RUNNING);
assertEquals(get(get(result, 0), 0).getRawState(), "running"); assertEquals(get(get(result, 0), 0).getRawState(), "running");
@ -91,7 +91,7 @@ public class DescribeInstancesResponseHandlerTest extends BaseEC2HandlerTest {
public void testApplyInputStream() { public void testApplyInputStream() {
Set<Reservation<RunningInstance>> contents = ImmutableSet.of(new Reservation<RunningInstance>(defaultRegion, Set<Reservation<RunningInstance>> contents = ImmutableSet.of(new Reservation<RunningInstance>(defaultRegion,
ImmutableSet.of("default"), ImmutableSet.of(new RunningInstance.Builder().region(defaultRegion).groupId( ImmutableSet.of("default"), ImmutableSet.of(new RunningInstance.Builder().region(defaultRegion).groupName(
"default").amiLaunchIndex("23").dnsName("ec2-72-44-33-4.compute-1.amazonaws.com").imageId( "default").amiLaunchIndex("23").dnsName("ec2-72-44-33-4.compute-1.amazonaws.com").imageId(
"ami-6ea54007").instanceId("i-28a64341").instanceState(InstanceState.RUNNING).rawState( "ami-6ea54007").instanceId("i-28a64341").instanceState(InstanceState.RUNNING).rawState(
"running").instanceType(InstanceType.M1_LARGE).kernelId("aki-ba3adfd3").keyName( "running").instanceType(InstanceType.M1_LARGE).kernelId("aki-ba3adfd3").keyName(
@ -101,7 +101,7 @@ public class DescribeInstancesResponseHandlerTest extends BaseEC2HandlerTest {
"10-251-50-132.ec2.internal")// product codes "10-251-50-132.ec2.internal")// product codes
// ImmutableSet.of("774F4FF8") // ImmutableSet.of("774F4FF8")
.ramdiskId("ari-badbad00").rootDeviceType(RootDeviceType.INSTANCE_STORE).build(), .ramdiskId("ari-badbad00").rootDeviceType(RootDeviceType.INSTANCE_STORE).build(),
new RunningInstance.Builder().region(defaultRegion).groupId("default").amiLaunchIndex("23") new RunningInstance.Builder().region(defaultRegion).groupName("default").amiLaunchIndex("23")
.dnsName("ec2-72-44-33-6.compute-1.amazonaws.com").imageId("ami-6ea54007").instanceId( .dnsName("ec2-72-44-33-6.compute-1.amazonaws.com").imageId("ami-6ea54007").instanceId(
"i-28a64435").instanceState(InstanceState.RUNNING).rawState("running") "i-28a64435").instanceState(InstanceState.RUNNING).rawState("running")
.instanceType(InstanceType.M1_LARGE).kernelId("aki-ba3adfd3").keyName( .instanceType(InstanceType.M1_LARGE).kernelId("aki-ba3adfd3").keyName(
@ -116,7 +116,7 @@ public class DescribeInstancesResponseHandlerTest extends BaseEC2HandlerTest {
Set<Reservation<? extends RunningInstance>> result = parseRunningInstances("/describe_instances.xml"); Set<Reservation<? extends RunningInstance>> result = parseRunningInstances("/describe_instances.xml");
assertEquals(result, contents); assertEquals(result.toString(), contents.toString());
assertEquals(get(get(result, 0), 0).getInstanceState(), InstanceState.RUNNING); assertEquals(get(get(result, 0), 0).getInstanceState(), InstanceState.RUNNING);
assertEquals(get(get(result, 0), 0).getRawState(), "running"); assertEquals(get(get(result, 0), 0).getRawState(), "running");
@ -126,7 +126,7 @@ public class DescribeInstancesResponseHandlerTest extends BaseEC2HandlerTest {
Set<Reservation<RunningInstance>> contents = ImmutableSet.of(new Reservation<RunningInstance>(defaultRegion, Set<Reservation<RunningInstance>> contents = ImmutableSet.of(new Reservation<RunningInstance>(defaultRegion,
ImmutableSet.of("adriancole.ec2ebsingress"), ImmutableSet.of(new RunningInstance.Builder().region( ImmutableSet.of("adriancole.ec2ebsingress"), ImmutableSet.of(new RunningInstance.Builder().region(
defaultRegion).groupId("adriancole.ec2ebsingress").amiLaunchIndex("0").dnsName( defaultRegion).groupName("adriancole.ec2ebsingress").amiLaunchIndex("0").dnsName(
"ec2-75-101-203-146.compute-1.amazonaws.com").imageId("ami-849875ed").instanceId("i-e564438d") "ec2-75-101-203-146.compute-1.amazonaws.com").imageId("ami-849875ed").instanceId("i-e564438d")
.instanceState(InstanceState.RUNNING).rawState("running").instanceType(InstanceType.M1_SMALL) .instanceState(InstanceState.RUNNING).rawState("running").instanceType(InstanceType.M1_SMALL)
.ipAddress("75.101.203.146").kernelId("aki-a71cf9ce") .ipAddress("75.101.203.146").kernelId("aki-a71cf9ce")
@ -145,7 +145,7 @@ public class DescribeInstancesResponseHandlerTest extends BaseEC2HandlerTest {
Set<Reservation<? extends RunningInstance>> result = parseRunningInstances("/describe_instances_ebs.xml"); Set<Reservation<? extends RunningInstance>> result = parseRunningInstances("/describe_instances_ebs.xml");
assertEquals(result, contents); assertEquals(result.toString(), contents.toString());
assertEquals(get(get(result, 0), 0).getInstanceState(), InstanceState.RUNNING); assertEquals(get(get(result, 0), 0).getInstanceState(), InstanceState.RUNNING);
assertEquals(get(get(result, 0), 0).getRawState(), "running"); assertEquals(get(get(result, 0), 0).getRawState(), "running");
} }

View File

@ -65,19 +65,19 @@ public class RunInstancesResponseHandlerTest extends BaseEC2HandlerTest {
Reservation<? extends RunningInstance> expected = new Reservation<RunningInstance>(defaultRegion, ImmutableSet Reservation<? extends RunningInstance> expected = new Reservation<RunningInstance>(defaultRegion, ImmutableSet
.of("default"), ImmutableSet.of( .of("default"), ImmutableSet.of(
new RunningInstance.Builder().region(defaultRegion).groupId("default").amiLaunchIndex("0") new RunningInstance.Builder().region(defaultRegion).groupName("default").amiLaunchIndex("0")
.imageId("ami-60a54009").instanceId("i-2ba64342").instanceState(InstanceState.PENDING).rawState( .imageId("ami-60a54009").instanceId("i-2ba64342").instanceState(InstanceState.PENDING).rawState(
"pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime( "pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime(
dateService.iso8601DateParse("2007-08-07T11:51:50.000Z"))// MonitoringState.ENABLED, dateService.iso8601DateParse("2007-08-07T11:51:50.000Z"))// MonitoringState.ENABLED,
.availabilityZone("us-east-1b").build(), .availabilityZone("us-east-1b").build(),
new RunningInstance.Builder().region(defaultRegion).groupId("default").amiLaunchIndex("1") new RunningInstance.Builder().region(defaultRegion).groupName("default").amiLaunchIndex("1")
.imageId("ami-60a54009").instanceId("i-2bc64242").instanceState(InstanceState.PENDING).rawState( .imageId("ami-60a54009").instanceId("i-2bc64242").instanceState(InstanceState.PENDING).rawState(
"pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime( "pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime(
dateService.iso8601DateParse("2007-08-07T11:51:50.000Z"))// MonitoringState.ENABLED, dateService.iso8601DateParse("2007-08-07T11:51:50.000Z"))// MonitoringState.ENABLED,
.availabilityZone("us-east-1b").build(), .availabilityZone("us-east-1b").build(),
new RunningInstance.Builder().region(defaultRegion).groupId("default").amiLaunchIndex("2") new RunningInstance.Builder().region(defaultRegion).groupName("default").amiLaunchIndex("2")
.imageId("ami-60a54009").instanceId("i-2be64332").instanceState(InstanceState.PENDING).rawState( .imageId("ami-60a54009").instanceId("i-2be64332").instanceState(InstanceState.PENDING).rawState(
"pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime( "pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime(
dateService.iso8601DateParse("2007-08-07T11:51:50.000Z"))// MonitoringState.ENABLED, dateService.iso8601DateParse("2007-08-07T11:51:50.000Z"))// MonitoringState.ENABLED,
@ -96,9 +96,9 @@ public class RunInstancesResponseHandlerTest extends BaseEC2HandlerTest {
InputStream is = getClass().getResourceAsStream("/run_instances_cloudbridge.xml"); InputStream is = getClass().getResourceAsStream("/run_instances_cloudbridge.xml");
Reservation<? extends RunningInstance> expected = new Reservation<RunningInstance>(defaultRegion, ImmutableSet Reservation<? extends RunningInstance> expected = new Reservation<RunningInstance>(defaultRegion, ImmutableSet
.of("default"), ImmutableSet.of( .of("jclouds#greenqloud-computeblock"), ImmutableSet.of(
new RunningInstance.Builder().region(defaultRegion).groupId("jclouds#greenqloud-computeblock").amiLaunchIndex("0") new RunningInstance.Builder().region(defaultRegion).groupName("jclouds#greenqloud-computeblock").amiLaunchIndex("0")
.imageId("qmi-9ac92558").instanceId("i-01b0dac3").instanceState(InstanceState.PENDING).rawState( .imageId("qmi-9ac92558").instanceId("i-01b0dac3").instanceState(InstanceState.PENDING).rawState(
"pending").instanceType(InstanceType.M1_SMALL).keyName("jclouds#greenqloud-computeblock#35") "pending").instanceType(InstanceType.M1_SMALL).keyName("jclouds#greenqloud-computeblock#35")
.launchTime(dateService.iso8601DateParse("2012-06-15T19:06:35.000+00:00")) .launchTime(dateService.iso8601DateParse("2012-06-15T19:06:35.000+00:00"))

View File

@ -31,7 +31,7 @@ import org.jclouds.ec2.domain.RootDeviceType;
import org.jclouds.ec2.domain.RunningInstance; import org.jclouds.ec2.domain.RunningInstance;
import org.jclouds.javax.annotation.Nullable; import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
@ -241,13 +241,13 @@ public class AWSRunningInstance extends RunningInstance {
} }
@Override @Override
public Builder groupId(String groupId) { public Builder groupName(String groupName) {
return Builder.class.cast(super.groupId(groupId)); return Builder.class.cast(super.groupName(groupName));
} }
@Override @Override
public Builder groupIds(Iterable<String> groupIds) { public Builder groupNames(Iterable<String> groupNames) {
return Builder.class.cast(super.groupIds(groupIds)); return Builder.class.cast(super.groupNames(groupNames));
} }
@Override @Override
@ -364,74 +364,10 @@ public class AWSRunningInstance extends RunningInstance {
} }
@Override @Override
public int hashCode() { protected ToStringHelper string() {
final int prime = 31; return super.string().add("monitoringState", monitoringState).add("placementGroup", placementGroup)
int result = super.hashCode(); .add("subnetId", subnetId).add("spotInstanceRequestId", spotInstanceRequestId).add("vpcId", vpcId)
result = prime * result + ((placementGroup == null) ? 0 : placementGroup.hashCode()); .add("hypervisor", hypervisor).add("tags", tags);
result = prime * result + ((productCodes == null) ? 0 : productCodes.hashCode());
result = prime * result + ((spotInstanceRequestId == null) ? 0 : spotInstanceRequestId.hashCode());
result = prime * result + ((subnetId == null) ? 0 : subnetId.hashCode());
result = prime * result + ((vpcId == null) ? 0 : vpcId.hashCode());
result = prime * result + ((hypervisor == null) ? 0 : hypervisor.hashCode());
result = prime * result + ((tags == null) ? 0 : tags.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
AWSRunningInstance other = (AWSRunningInstance) obj;
if (placementGroup == null) {
if (other.placementGroup != null)
return false;
} else if (!placementGroup.equals(other.placementGroup))
return false;
if (productCodes == null) {
if (other.productCodes != null)
return false;
} else if (!productCodes.equals(other.productCodes))
return false;
if (spotInstanceRequestId == null) {
if (other.spotInstanceRequestId != null)
return false;
} else if (!spotInstanceRequestId.equals(other.spotInstanceRequestId))
return false;
if (subnetId == null) {
if (other.subnetId != null)
return false;
} else if (!subnetId.equals(other.subnetId))
return false;
if (vpcId == null) {
if (other.vpcId != null)
return false;
} else if (!vpcId.equals(other.vpcId))
return false;
if (tags == null) {
if (other.tags != null)
return false;
} else if (!tags.equals(other.tags))
return false;
if (!Objects.equal(hypervisor, other.hypervisor))
return false;
return true;
}
@Override
public String toString() {
return "[region=" + region + ", availabilityZone=" + availabilityZone + ", instanceId=" + instanceId
+ ", instanceState=" + rawState + ", instanceType=" + instanceType + ", virtualizationType="
+ virtualizationType + ", imageId=" + imageId + ", ipAddress=" + ipAddress + ", dnsName=" + dnsName
+ ", privateIpAddress=" + privateIpAddress + ", privateDnsName=" + privateDnsName + ", keyName="
+ keyName + ", platform=" + platform + ", launchTime=" + launchTime + ", rootDeviceName="
+ rootDeviceName + ", rootDeviceType=" + rootDeviceType + ", ebsBlockDevices=" + ebsBlockDevices
+ ", monitoringState=" + monitoringState + ", placementGroup=" + placementGroup + ", productCodes="
+ productCodes + ", spotInstanceRequestId=" + spotInstanceRequestId + ", subnetId=" + subnetId
+ ", hypervisor=" + hypervisor + ", vpcId=" + vpcId + ", tags=" + tags + "]";
} }
} }

View File

@ -52,7 +52,7 @@ public class SpotInstanceRequestToAWSRunningInstance implements Function<SpotIns
builder.availabilityZone(spec.getAvailabilityZone()); builder.availabilityZone(spec.getAvailabilityZone());
// TODO convert // TODO convert
// builder.devices(spec.getBlockDeviceMappings()); // builder.devices(spec.getBlockDeviceMappings());
builder.groupIds(spec.getSecurityGroupNames()); builder.groupNames(spec.getSecurityGroupNames());
builder.imageId(spec.getImageId()); builder.imageId(spec.getImageId());
builder.instanceType(spec.getInstanceType()); builder.instanceType(spec.getInstanceType());
builder.kernelId(spec.getKernelId()); builder.kernelId(spec.getKernelId());

View File

@ -187,7 +187,7 @@ public class AWSEC2ComputeServiceLiveTest extends EC2ComputeServiceLiveTest {
} }
// make sure we made our dummy group and also let in the user's group // make sure we made our dummy group and also let in the user's group
assertEquals(newTreeSet(instance.getGroupIds()), ImmutableSortedSet.<String> of("jclouds#" + group, group)); assertEquals(newTreeSet(instance.getGroupNames()), ImmutableSortedSet.<String> of("jclouds#" + group, group));
// make sure our dummy group has no rules // make sure our dummy group has no rules
SecurityGroup secgroup = getOnlyElement(securityGroupClient.describeSecurityGroupsInRegion(instance SecurityGroup secgroup = getOnlyElement(securityGroupClient.describeSecurityGroupsInRegion(instance

View File

@ -117,8 +117,8 @@ public class IncidentalResourcesGetCleanedUpLiveTest extends BaseComputeServiceC
assertNotNull(instance1.getKeyName()); assertNotNull(instance1.getKeyName());
assertEquals(instance1.getRegion(), instance2.getRegion(), "Nodes are not in the same region"); assertEquals(instance1.getRegion(), instance2.getRegion(), "Nodes are not in the same region");
assertEquals(instance1.getKeyName(), instance2.getKeyName(), "Nodes do not have same key-pair name"); assertEquals(instance1.getKeyName(), instance2.getKeyName(), "Nodes do not have same key-pair name");
assertEquals(instance1.getGroupIds(), instance2.getGroupIds(), "Nodes are not in the same group"); assertEquals(instance1.getGroupNames(), instance2.getGroupNames(), "Nodes are not in the same group");
assertEquals(instance1.getGroupIds(), ImmutableSet.of(expectedSecurityGroupName), "Nodes are not in the expected security group"); assertEquals(instance1.getGroupNames(), ImmutableSet.of(expectedSecurityGroupName), "Nodes are not in the expected security group");
// Assert a single key-pair and security group has been created // Assert a single key-pair and security group has been created
String expectedKeyPairName = instance1.getKeyName(); String expectedKeyPairName = instance1.getKeyName();

View File

@ -66,7 +66,7 @@ public class SpotInstanceRequestToAWSRunningInstanceTest {
AWSRunningInstance.builder().region("us-east-1").instanceId("sir-228e6406") AWSRunningInstance.builder().region("us-east-1").instanceId("sir-228e6406")
.spotInstanceRequestId("sir-228e6406").instanceState(InstanceState.PENDING) .spotInstanceRequestId("sir-228e6406").instanceState(InstanceState.PENDING)
.rawState("open").imageId("ami-595a0a1c") .rawState("open").imageId("ami-595a0a1c")
.groupId("default").instanceType("m1.large") .groupName("default").instanceType("m1.large")
.tag("foo", "bar") .tag("foo", "bar")
.tag("empty", "") .tag("empty", "")
.hypervisor(Hypervisor.XEN) .hypervisor(Hypervisor.XEN)

View File

@ -0,0 +1,114 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.jclouds.aws.ec2.parse;
import static org.testng.Assert.assertEquals;
import java.io.InputStream;
import java.util.Set;
import org.jclouds.aws.ec2.domain.AWSRunningInstance;
import org.jclouds.aws.ec2.domain.MonitoringState;
import org.jclouds.aws.ec2.xml.AWSDescribeInstancesResponseHandler;
import org.jclouds.date.DateService;
import org.jclouds.ec2.domain.Attachment;
import org.jclouds.ec2.domain.BlockDevice;
import org.jclouds.ec2.domain.Hypervisor;
import org.jclouds.ec2.domain.InstanceState;
import org.jclouds.ec2.domain.Reservation;
import org.jclouds.ec2.domain.RootDeviceType;
import org.jclouds.ec2.domain.RunningInstance;
import org.jclouds.ec2.xml.BaseEC2HandlerTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
/**
* Tests behavior of {@code AWSDescribeInstancesResponseHandler}
*
* @author Adrian Cole
*/
// NOTE:without testName, this will not call @Before* and fail w/NPE during
// surefire
@Test(groups = "unit", testName = "AWSDescribeInstancesResponseHandlerTest")
public class DescribeInstancesResponseTest extends BaseEC2HandlerTest {
private DateService dateService;
@BeforeTest
@Override
protected void setUpInjector() {
super.setUpInjector();
dateService = injector.getInstance(DateService.class);
assert dateService != null;
}
public void test() {
InputStream is = getClass().getResourceAsStream("/describe_instances_pending.xml");
Set<Reservation<AWSRunningInstance>> expected = expected();
AWSDescribeInstancesResponseHandler handler = injector.getInstance(AWSDescribeInstancesResponseHandler.class);
Set<Reservation<? extends RunningInstance>> result = factory.create(handler).parse(is);
assertEquals(result.toString(), expected.toString());
}
public Set<Reservation<AWSRunningInstance>> expected() {
return ImmutableSet.of(Reservation.<AWSRunningInstance>builder()
.region(defaultRegion)
.reservationId("r-3f056a58")
.ownerId("095072994936")
// <groupId>sg-f788299f</groupId>
.groupName("launchpad_sec_group")
// <groupId>sg-7e512116</groupId>
.groupName("jclouds#4c858090-f66c-4225-aa57-6fcaa42198ae")
.instance(AWSRunningInstance.builder()
.region(defaultRegion)
.instanceId("i-32451248")
.imageId("ami-bf8131d6")
.rawState("pending")
.instanceState(InstanceState.PENDING)
.privateDnsName("ip-10-194-149-220.ec2.internal")
.dnsName("ec2-23-20-17-42.compute-1.amazonaws.com")
.keyName("jclouds#4c858090-f66c-4225-aa57-6fcaa42198ae#105")
.amiLaunchIndex("0")
.instanceType("c1.medium")
.launchTime(dateService.iso8601DateParse("2012-09-14T20:01:34.000Z"))
.availabilityZone("us-east-1d")
// .tenancy("default")
.kernelId("aki-825ea7eb")
.monitoringState(MonitoringState.DISABLED)
.privateIpAddress("10.194.149.220")
.ipAddress("23.20.17.42")
.securityGroupIdToName("sg-f788299f", "launchpad_sec_group")
.securityGroupIdToName("sg-7e512116", "jclouds#4c858090-f66c-4225-aa57-6fcaa42198ae")
// .architecture("x86_64")
.rootDeviceType(RootDeviceType.EBS)
.rootDeviceName("/dev/sda1")
.device("/dev/sda1", new BlockDevice("vol-b2beb3c9", Attachment.Status.ATTACHING, dateService.iso8601DateParse("2012-09-14T20:01:37.000Z"), true))
.virtualizationType("paravirtual")
.tag("Name", "4c858090-f66c-4225-aa57-6fcaa42198ae-32451248")
.hypervisor(Hypervisor.XEN)
.build()).build());
}
}

View File

@ -31,7 +31,6 @@ import org.jclouds.ec2.domain.Attachment;
import org.jclouds.ec2.domain.BlockDevice; import org.jclouds.ec2.domain.BlockDevice;
import org.jclouds.ec2.domain.Hypervisor; import org.jclouds.ec2.domain.Hypervisor;
import org.jclouds.ec2.domain.InstanceState; import org.jclouds.ec2.domain.InstanceState;
import org.jclouds.ec2.domain.InstanceType;
import org.jclouds.ec2.domain.Reservation; import org.jclouds.ec2.domain.Reservation;
import org.jclouds.ec2.domain.RootDeviceType; import org.jclouds.ec2.domain.RootDeviceType;
import org.jclouds.ec2.domain.RunningInstance; import org.jclouds.ec2.domain.RunningInstance;
@ -71,44 +70,13 @@ public class AWSDescribeInstancesResponseHandlerTest extends BaseEC2HandlerTest
assert dateService != null; assert dateService != null;
} }
public void testWhenRunning() throws UnknownHostException {
Set<Reservation<AWSRunningInstance>> contents = ImmutableSet.of(
new Reservation<AWSRunningInstance>(defaultRegion, ImmutableSet.of("adriancole.ec2ingress"), ImmutableSet.of(
new AWSRunningInstance.Builder()
.region(defaultRegion)
.groupId("adriancole.ec2ingress")
.amiLaunchIndex("0")
.dnsName("ec2-174-129-81-68.compute-1.amazonaws.com")
.imageId("ami-82e4b5c7")
.instanceId("i-0799056f")
.instanceState(InstanceState.RUNNING)
.rawState("running")
.instanceType(InstanceType.M1_SMALL)
.ipAddress("174.129.81.68")
.kernelId("aki-a71cf9ce")
.keyName("adriancole.ec21")
.launchTime(dateService.iso8601DateParse("2009-11-09T03:00:34.000Z"))
.monitoringState(MonitoringState.DISABLED)
.availabilityZone("us-east-1c")
.virtualizationType("paravirtual")
.privateDnsName("ip-10-243-42-70.ec2.internal")
.privateIpAddress("10.243.42.70")
.ramdiskId("ari-a51cf9cc")
.rootDeviceType(RootDeviceType.INSTANCE_STORE)
.hypervisor(Hypervisor.XEN)
.build()),
"993194456877", null, "r-a3c508cb"));
Set<Reservation<? extends RunningInstance>> result = parseAWSRunningInstances("/describe_instances_running.xml");
assertEquals(result.toString(), contents.toString());
}
public void testWhenRunningLatest() throws UnknownHostException { public void testWhenRunningLatest() throws UnknownHostException {
Set<Reservation<AWSRunningInstance>> contents = ImmutableSet.of(new Reservation<AWSRunningInstance>( Set<Reservation<AWSRunningInstance>> contents = ImmutableSet.of(Reservation.<AWSRunningInstance>builder()
defaultRegion, ImmutableSet.of("jclouds#ec2-s#us-east-1"), ImmutableSet.of( .region(defaultRegion)
new AWSRunningInstance.Builder() .reservationId("r-0f4c2160")
.groupName("jclouds#zkclustertest#us-east-1")
.instance(AWSRunningInstance.builder()
.region(defaultRegion) .region(defaultRegion)
.instanceId("i-911444f0") .instanceId("i-911444f0")
.imageId("ami-63be790a") .imageId("ami-63be790a")
@ -135,8 +103,8 @@ public class AWSDescribeInstancesResponseHandlerTest extends BaseEC2HandlerTest
new BlockDevice("vol-5829fc32", Attachment.Status.ATTACHED, dateService new BlockDevice("vol-5829fc32", Attachment.Status.ATTACHED, dateService
.iso8601DateParse("2011-08-16T13:41:19.000Z"), true)) .iso8601DateParse("2011-08-16T13:41:19.000Z"), true))
.hypervisor(Hypervisor.XEN) .hypervisor(Hypervisor.XEN)
.virtualizationType("paravirtual").build(),// .virtualizationType("paravirtual").build())
new AWSRunningInstance.Builder() .instance(AWSRunningInstance.builder()
.region(defaultRegion) .region(defaultRegion)
.instanceId("i-931444f2") .instanceId("i-931444f2")
.imageId("ami-63be790a") .imageId("ami-63be790a")
@ -162,7 +130,7 @@ public class AWSDescribeInstancesResponseHandlerTest extends BaseEC2HandlerTest
new BlockDevice("vol-5029fc3a", Attachment.Status.ATTACHED, dateService new BlockDevice("vol-5029fc3a", Attachment.Status.ATTACHED, dateService
.iso8601DateParse("2011-08-16T13:41:19.000Z"), true)) .iso8601DateParse("2011-08-16T13:41:19.000Z"), true))
.hypervisor(Hypervisor.XEN) .hypervisor(Hypervisor.XEN)
.virtualizationType("paravirtual").build()), defaultRegion, defaultRegion, defaultRegion)); .virtualizationType("paravirtual").build()).build());
Set<Reservation<? extends RunningInstance>> result = parseAWSRunningInstances("/describe_instances_latest.xml"); Set<Reservation<? extends RunningInstance>> result = parseAWSRunningInstances("/describe_instances_latest.xml");
@ -175,76 +143,6 @@ public class AWSDescribeInstancesResponseHandlerTest extends BaseEC2HandlerTest
parseAWSRunningInstances("/describe_instances_3.xml"); parseAWSRunningInstances("/describe_instances_3.xml");
} }
public void testApplyInputStream() {
Set<Reservation<AWSRunningInstance>> contents = ImmutableSet.of(new Reservation<AWSRunningInstance>(
defaultRegion, ImmutableSet.of("default"), ImmutableSet.of(
new AWSRunningInstance.Builder().region(defaultRegion).groupId("default").amiLaunchIndex("23")
.dnsName("ec2-72-44-33-4.compute-1.amazonaws.com").imageId("ami-6ea54007")
.instanceId("i-28a64341").instanceState(InstanceState.RUNNING).rawState("running")
.instanceType(InstanceType.M1_LARGE).kernelId("aki-ba3adfd3").keyName("example-key-name")
.launchTime(dateService.iso8601DateParse("2007-08-07T11:54:42.000Z"))
.monitoringState(MonitoringState.DISABLED).availabilityZone("us-east-1b")
.virtualizationType("paravirtual").privateDnsName("10-251-50-132.ec2.internal")
.productCode("774F4FF8").ramdiskId("ari-badbad00")
.hypervisor(Hypervisor.XEN)
.rootDeviceType(RootDeviceType.INSTANCE_STORE).build(),
new AWSRunningInstance.Builder().region(defaultRegion).groupId("default").amiLaunchIndex("23")
.dnsName("ec2-72-44-33-6.compute-1.amazonaws.com").imageId("ami-6ea54007")
.instanceId("i-28a64435").instanceState(InstanceState.RUNNING).rawState("running")
.instanceType(InstanceType.M1_LARGE).kernelId("aki-ba3adfd3").keyName("example-key-name")
.launchTime(dateService.iso8601DateParse("2007-08-07T11:54:42.000Z"))
.monitoringState(MonitoringState.DISABLED).availabilityZone("us-east-1b")
.virtualizationType("paravirtual").privateDnsName("10-251-50-134.ec2.internal")
.productCode("774F4FF8").ramdiskId("ari-badbad00")
.hypervisor(Hypervisor.XEN)
.rootDeviceType(RootDeviceType.INSTANCE_STORE).build()), "UYY3TLBUXIEON5NQVUUX6OMPWBZIQNFM",
null, "r-44a5402d"));
Set<Reservation<? extends RunningInstance>> result = parseAWSRunningInstances("/describe_instances.xml");
assertEquals(result.toString(), contents.toString());
}
public void testEBS() throws UnknownHostException {
Set<Reservation<AWSRunningInstance>> contents = ImmutableSet.of(new Reservation<AWSRunningInstance>(
defaultRegion, ImmutableSet.of("adriancole.ec2ebsingress"), ImmutableSet
.of(new AWSRunningInstance.Builder()
.region(defaultRegion)
.groupId("adriancole.ec2ebsingress")
.amiLaunchIndex("0")
.dnsName("ec2-75-101-203-146.compute-1.amazonaws.com")
.imageId("ami-849875ed")
.instanceId("i-e564438d")
.instanceState(InstanceState.RUNNING)
.rawState("running")
.instanceType(InstanceType.M1_SMALL)
.ipAddress("75.101.203.146")
.kernelId("aki-a71cf9ce")
.keyName("adriancole.ec2ebs1")
.launchTime(dateService.iso8601DateParse("2009-12-30T04:06:23.000Z"))
.monitoringState(MonitoringState.DISABLED)
.availabilityZone("us-east-1b")
.placementGroup("placement")
.virtualizationType("hvm")
.privateDnsName("domU-12-31-39-09-CE-53.compute-1.internal")
.privateIpAddress("10.210.209.157")
.ramdiskId("ari-a51cf9cc")
.hypervisor(Hypervisor.XEN)
.rootDeviceType(RootDeviceType.EBS)
.rootDeviceName("/dev/sda1")
.hypervisor(Hypervisor.XEN)
.device(
"/dev/sda1",
new BlockDevice("vol-dc6ca8b5", Attachment.Status.ATTACHED, dateService
.iso8601DateParse("2009-12-30T04:06:29.000Z"), true)).build()), "993194456877",
null, "r-596dd731"));
Set<Reservation<? extends RunningInstance>> result = parseAWSRunningInstances("/describe_instances_ebs.xml");
assertEquals(result.toString(), contents.toString());
}
static ParseSax<Set<Reservation<? extends RunningInstance>>> createParser() { static ParseSax<Set<Reservation<? extends RunningInstance>>> createParser() {
Injector injector = Guice.createInjector(new SaxParserModule(), new AbstractModule() { Injector injector = Guice.createInjector(new SaxParserModule(), new AbstractModule() {

View File

@ -44,7 +44,6 @@ import org.testng.annotations.Test;
import com.google.common.base.Supplier; import com.google.common.base.Supplier;
import com.google.common.base.Suppliers; import com.google.common.base.Suppliers;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.TypeLiteral; import com.google.inject.TypeLiteral;
@ -82,28 +81,25 @@ public class AWSRunInstancesResponseHandlerTest extends BaseEC2HandlerTest {
InputStream is = getClass().getResourceAsStream("/run_instances.xml"); InputStream is = getClass().getResourceAsStream("/run_instances.xml");
Reservation<? extends AWSRunningInstance> expected = new Reservation<AWSRunningInstance>(defaultRegion, Reservation<? extends AWSRunningInstance> expected = Reservation.<AWSRunningInstance>builder()
ImmutableSet.of("default"), ImmutableSet.of( .region(defaultRegion)
.instance(AWSRunningInstance.builder().region(defaultRegion).groupName("default").amiLaunchIndex("0").imageId(
new AWSRunningInstance.Builder().region(defaultRegion).groupId("default").amiLaunchIndex("0").imageId(
"ami-60a54009").instanceId("i-2ba64342").instanceState(InstanceState.PENDING).rawState( "ami-60a54009").instanceId("i-2ba64342").instanceState(InstanceState.PENDING).rawState(
"pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime( "pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime(
dateService.iso8601DateParse("2007-08-07T11:51:50.000Z")).hypervisor(Hypervisor.XEN) dateService.iso8601DateParse("2007-08-07T11:51:50.000Z")).hypervisor(Hypervisor.XEN)
.monitoringState(MonitoringState.ENABLED).availabilityZone("us-east-1b").build(), .monitoringState(MonitoringState.ENABLED).availabilityZone("us-east-1b").build())
.instance(AWSRunningInstance.builder().region(defaultRegion).groupName("default").amiLaunchIndex("1").imageId(
new AWSRunningInstance.Builder().region(defaultRegion).groupId("default").amiLaunchIndex("1").imageId(
"ami-60a54009").instanceId("i-2bc64242").instanceState(InstanceState.PENDING).rawState( "ami-60a54009").instanceId("i-2bc64242").instanceState(InstanceState.PENDING).rawState(
"pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime( "pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime(
dateService.iso8601DateParse("2007-08-07T11:51:50.000Z")).hypervisor(Hypervisor.XEN) dateService.iso8601DateParse("2007-08-07T11:51:50.000Z")).hypervisor(Hypervisor.XEN)
.monitoringState(MonitoringState.ENABLED).availabilityZone("us-east-1b").build(), .monitoringState(MonitoringState.ENABLED).availabilityZone("us-east-1b").build())
.instance(AWSRunningInstance.builder().region(defaultRegion).groupName("default").amiLaunchIndex("2").imageId(
new AWSRunningInstance.Builder().region(defaultRegion).groupId("default").amiLaunchIndex("2").imageId(
"ami-60a54009").instanceId("i-2be64332").instanceState(InstanceState.PENDING).rawState( "ami-60a54009").instanceId("i-2be64332").instanceState(InstanceState.PENDING).rawState(
"pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime( "pending").instanceType(InstanceType.M1_SMALL).keyName("example-key-name").launchTime(
dateService.iso8601DateParse("2007-08-07T11:51:50.000Z")).hypervisor(Hypervisor.XEN) dateService.iso8601DateParse("2007-08-07T11:51:50.000Z")).hypervisor(Hypervisor.XEN)
.monitoringState(MonitoringState.ENABLED).availabilityZone("us-east-1b").build()) .monitoringState(MonitoringState.ENABLED).availabilityZone("us-east-1b").build())
.ownerId("AIDADH4IGTRXXKCD")
, "AIDADH4IGTRXXKCD", null, "r-47a5402e"); .reservationId("r-47a5402e").build();
AWSRunInstancesResponseHandler handler = injector.getInstance(AWSRunInstancesResponseHandler.class); AWSRunInstancesResponseHandler handler = injector.getInstance(AWSRunInstancesResponseHandler.class);
addDefaultRegionToHandler(handler); addDefaultRegionToHandler(handler);

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2011-05-15/">
<requestId>dcd37ecf-e5b6-462b-99a8-112427b3e3a2</requestId>
<reservationSet>
<item>
<reservationId>r-3f056a58</reservationId>
<ownerId>095072994936</ownerId>
<groupSet>
<item>
<groupId>sg-f788299f</groupId>
<groupName>launchpad_sec_group</groupName>
</item>
<item>
<groupId>sg-7e512116</groupId>
<groupName>jclouds#4c858090-f66c-4225-aa57-6fcaa42198ae</groupName>
</item>
</groupSet>
<instancesSet>
<item>
<instanceId>i-32451248</instanceId>
<imageId>ami-bf8131d6</imageId>
<instanceState>
<code>0</code>
<name>pending</name>
</instanceState>
<privateDnsName>ip-10-194-149-220.ec2.internal</privateDnsName>
<dnsName>ec2-23-20-17-42.compute-1.amazonaws.com</dnsName>
<reason/>
<keyName>jclouds#4c858090-f66c-4225-aa57-6fcaa42198ae#105</keyName>
<amiLaunchIndex>0</amiLaunchIndex>
<productCodes/>
<instanceType>c1.medium</instanceType>
<launchTime>2012-09-14T20:01:34.000Z</launchTime>
<placement>
<availabilityZone>us-east-1d</availabilityZone>
<groupName/>
<tenancy>default</tenancy>
</placement>
<kernelId>aki-825ea7eb</kernelId>
<monitoring>
<state>disabled</state>
</monitoring>
<privateIpAddress>10.194.149.220</privateIpAddress>
<ipAddress>23.20.17.42</ipAddress>
<groupSet>
<item>
<groupId>sg-f788299f</groupId>
<groupName>launchpad_sec_group</groupName>
</item>
<item>
<groupId>sg-7e512116</groupId>
<groupName>jclouds#4c858090-f66c-4225-aa57-6fcaa42198ae</groupName>
</item>
</groupSet>
<architecture>x86_64</architecture>
<rootDeviceType>ebs</rootDeviceType>
<rootDeviceName>/dev/sda1</rootDeviceName>
<blockDeviceMapping>
<item>
<deviceName>/dev/sda1</deviceName>
<ebs>
<volumeId>vol-b2beb3c9</volumeId>
<status>attaching</status>
<attachTime>2012-09-14T20:01:37.000Z</attachTime>
<deleteOnTermination>true</deleteOnTermination>
</ebs>
</item>
</blockDeviceMapping>
<virtualizationType>paravirtual</virtualizationType>
<clientToken/>
<tagSet>
<item>
<key>Name</key>
<value>4c858090-f66c-4225-aa57-6fcaa42198ae-32451248</value>
</item>
</tagSet>
<hypervisor>xen</hypervisor>
</item>
</instancesSet>
</item>
</reservationSet>
</DescribeInstancesResponse>