mirror of
https://github.com/apache/jclouds.git
synced 2025-02-09 11:35:41 +00:00
Make instance api prettier.
This commit is contained in:
parent
a85dd6e0f9
commit
382dc0d236
@ -131,10 +131,11 @@ public interface GoogleComputeEngineApi extends Closeable {
|
||||
* Provides access to Instance features
|
||||
*
|
||||
* @param projectName the name of the project
|
||||
* @param zone zone the instances are in.
|
||||
*/
|
||||
@Delegate
|
||||
@Path("/projects/{project}")
|
||||
InstanceApi getInstanceApi(@PathParam("project") String projectName);
|
||||
@Path("/projects/{project}/zones/{zone}")
|
||||
InstanceApi getInstanceApi(@PathParam("project") String projectName, @PathParam("zone") String zone);
|
||||
|
||||
/**
|
||||
* Provides access to MachineType features
|
||||
|
@ -139,9 +139,9 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
|
||||
|
||||
disks.add(new PersistentDisk(Mode.READ_WRITE,
|
||||
bootDisk.selfLink(),
|
||||
null,
|
||||
true,
|
||||
true));
|
||||
null, // deviceName
|
||||
true, // autoDelete
|
||||
true)); // boot
|
||||
}
|
||||
|
||||
disks.addAll(options.getDisks());
|
||||
@ -169,9 +169,9 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
|
||||
instanceTemplate.metadata(metadataBuilder.build());
|
||||
instanceTemplate.serviceAccounts(options.getServiceAccounts());
|
||||
|
||||
final InstanceApi instanceApi = api.getInstanceApi(userProject.get());
|
||||
final String zone = template.getLocation().getId();
|
||||
Operation operation = instanceApi.createInZone(name, zone, instanceTemplate);
|
||||
String zone = template.getLocation().getId();
|
||||
final InstanceApi instanceApi = api.getInstanceApi(userProject.get(), zone);
|
||||
Operation operation = instanceApi.create(name, instanceTemplate);
|
||||
|
||||
if (options.shouldBlockUntilRunning()) {
|
||||
waitOperationDone(operation);
|
||||
@ -181,23 +181,20 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
|
||||
AtomicReference<Instance> instance = Atomics.newReference();
|
||||
|
||||
retry(new Predicate<AtomicReference<Instance>>() {
|
||||
@Override
|
||||
public boolean apply(AtomicReference<Instance> input) {
|
||||
input.set(instanceApi.getInZone(zone, name));
|
||||
@Override public boolean apply(AtomicReference<Instance> input) {
|
||||
input.set(instanceApi.get(name));
|
||||
return input.get() != null;
|
||||
}
|
||||
}, operationCompleteCheckTimeout, operationCompleteCheckInterval, MILLISECONDS).apply(instance);
|
||||
|
||||
if (!options.getTags().isEmpty()) {
|
||||
Operation tagsOperation = instanceApi
|
||||
.setTagsInZone(zone, name, options.getTags(), instance.get().tags().fingerprint());
|
||||
Operation tagsOperation = instanceApi.setTags(name, options.getTags(), instance.get().tags().fingerprint());
|
||||
|
||||
waitOperationDone(tagsOperation);
|
||||
|
||||
retry(new Predicate<AtomicReference<Instance>>() {
|
||||
@Override
|
||||
public boolean apply(AtomicReference<Instance> input) {
|
||||
input.set(instanceApi.getInZone(zone, name));
|
||||
@Override public boolean apply(AtomicReference<Instance> input) {
|
||||
input.set(instanceApi.get(name));
|
||||
return input.get() != null;
|
||||
}
|
||||
}, operationCompleteCheckTimeout, operationCompleteCheckInterval, MILLISECONDS).apply(instance);
|
||||
@ -206,18 +203,14 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
|
||||
// Add tags for security groups
|
||||
final FirewallTagNamingConvention naming = firewallTagNamingConvention.get(group);
|
||||
Set<String> tags = FluentIterable.from(Ints.asList(options.getInboundPorts()))
|
||||
.transform(new Function<Integer, String>(){
|
||||
@Override
|
||||
public String apply(Integer input) {
|
||||
return input != null
|
||||
? naming.name(input)
|
||||
: null;
|
||||
}
|
||||
})
|
||||
.toSet();
|
||||
instanceApi.setTagsInZone(zone, instance.get().name(), tags, instance.get().tags().fingerprint());
|
||||
.transform(new Function<Integer, String>() {
|
||||
@Override public String apply(Integer input) {
|
||||
return input != null ? naming.name(input) : null;
|
||||
}
|
||||
}).toSet();
|
||||
instanceApi.setTags(instance.get().name(), tags, instance.get().tags().fingerprint());
|
||||
|
||||
InstanceInZone instanceInZone = new InstanceInZone(instance.get(), zone);
|
||||
InstanceInZone instanceInZone = InstanceInZone.create(instance.get(), zone);
|
||||
|
||||
return new NodeAndInitialCredentials<InstanceInZone>(instanceInZone, instanceInZone.slashEncode(), credentials);
|
||||
}
|
||||
@ -240,8 +233,7 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
|
||||
|
||||
waitOperationDone(diskOperation);
|
||||
|
||||
return api.getDiskApi(userProject.get()).getInZone(template.getLocation().getId(),
|
||||
diskName);
|
||||
return api.getDiskApi(userProject.get()).getInZone(template.getLocation().getId(), diskName);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -252,15 +244,12 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
|
||||
for (Iterator<ListPage<MachineType>> i = api.getMachineTypeApi(userProject.get()).listInZone(zone.getId());
|
||||
i.hasNext(); ) {
|
||||
builder.addAll(FluentIterable.from(i.next()).filter(new Predicate<MachineType>() {
|
||||
@Override
|
||||
public boolean apply(MachineType input) {
|
||||
@Override public boolean apply(MachineType input) {
|
||||
return input.deprecated() == null;
|
||||
}
|
||||
}).transform(new Function<MachineType, MachineTypeInZone>() {
|
||||
|
||||
@Override
|
||||
public MachineTypeInZone apply(MachineType arg0) {
|
||||
return new MachineTypeInZone(arg0, arg0.zone());
|
||||
@Override public MachineTypeInZone apply(MachineType arg0) {
|
||||
return MachineTypeInZone.create(arg0, arg0.zone());
|
||||
}
|
||||
}));
|
||||
}
|
||||
@ -294,24 +283,20 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
|
||||
|
||||
@Override
|
||||
public InstanceInZone getNode(String name) {
|
||||
SlashEncodedIds slashEncodedIds = SlashEncodedIds.fromSlashEncoded(name);
|
||||
|
||||
Instance instance = api.getInstanceApi(userProject.get()).getInZone(slashEncodedIds.getFirstId(),
|
||||
slashEncodedIds.getSecondId());
|
||||
|
||||
return instance == null ? null : new InstanceInZone(instance, slashEncodedIds.getFirstId());
|
||||
SlashEncodedIds zoneAndId = SlashEncodedIds.fromSlashEncoded(name);
|
||||
Instance instance = api.getInstanceApi(userProject.get(), zoneAndId.left()).get(zoneAndId.right());
|
||||
return instance == null ? null : InstanceInZone.create(instance, zoneAndId.left());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<InstanceInZone> listNodes() {
|
||||
return FluentIterable.from(zones.get().values())
|
||||
.transformAndConcat(new Function<Location, Iterable<InstanceInZone>>() {
|
||||
@Override
|
||||
public Iterable<InstanceInZone> apply(final Location input) {
|
||||
return transform(concat(api.getInstanceApi(userProject.get()).listInZone(input.getId())),
|
||||
@Override public Iterable<InstanceInZone> apply(final Location input) {
|
||||
return transform(concat(api.getInstanceApi(userProject.get(), input.getId()).list()),
|
||||
new Function<Instance, InstanceInZone>() {
|
||||
@Override public InstanceInZone apply(Instance arg0) {
|
||||
return new InstanceInZone(arg0, input.getId());
|
||||
return InstanceInZone.create(arg0, input.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -319,22 +304,19 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<InstanceInZone> listNodesByIds(final Iterable<String> ids) {
|
||||
public Iterable<InstanceInZone> listNodesByIds(final Iterable<String> zoneAndId) {
|
||||
return filter(listNodes(), new Predicate<InstanceInZone>() {
|
||||
|
||||
@Override
|
||||
public boolean apply(InstanceInZone instanceInZone) {
|
||||
return contains(ids, instanceInZone.getInstance().name());
|
||||
@Override public boolean apply(InstanceInZone instanceInZone) {
|
||||
return contains(zoneAndId, instanceInZone.instance().name());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroyNode(final String name) {
|
||||
SlashEncodedIds slashEncodedIds = SlashEncodedIds.fromSlashEncoded(name);
|
||||
SlashEncodedIds zoneAndId = SlashEncodedIds.fromSlashEncoded(name);
|
||||
String diskName = null;
|
||||
Instance instance = api.getInstanceApi(userProject.get()).getInZone(slashEncodedIds.getFirstId(),
|
||||
slashEncodedIds.getSecondId());
|
||||
Instance instance = api.getInstanceApi(userProject.get(), zoneAndId.left()).get(zoneAndId.right());
|
||||
if (instance != null &&
|
||||
"true".equals(instance.metadata().items().get(GCE_DELETE_BOOT_DISK_METADATA_KEY))) {
|
||||
for (AttachedDisk input : instance.disks()) {
|
||||
@ -344,20 +326,17 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
|
||||
}
|
||||
}
|
||||
}
|
||||
waitOperationDone(api.getInstanceApi(userProject.get()).deleteInZone(slashEncodedIds.getFirstId(),
|
||||
slashEncodedIds.getSecondId()));
|
||||
waitOperationDone(api.getInstanceApi(userProject.get(), zoneAndId.left()).delete(zoneAndId.right()));
|
||||
|
||||
if (diskName != null) {
|
||||
waitOperationDone(api.getDiskApi(userProject.get()).deleteInZone(slashEncodedIds.getFirstId(), diskName));
|
||||
waitOperationDone(api.getDiskApi(userProject.get()).deleteInZone(zoneAndId.left(), diskName));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rebootNode(final String name) {
|
||||
SlashEncodedIds slashEncodedIds = SlashEncodedIds.fromSlashEncoded(name);
|
||||
|
||||
waitOperationDone(api.getInstanceApi(userProject.get()).resetInZone(slashEncodedIds.getFirstId(),
|
||||
slashEncodedIds.getSecondId()));
|
||||
SlashEncodedIds zoneAndId = SlashEncodedIds.fromSlashEncoded(name);
|
||||
waitOperationDone(api.getInstanceApi(userProject.get(), zoneAndId.left()).reset(zoneAndId.right()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,39 +16,24 @@
|
||||
*/
|
||||
package org.jclouds.googlecomputeengine.compute.domain;
|
||||
|
||||
import static com.google.common.base.Objects.equal;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import org.jclouds.googlecomputeengine.domain.Instance;
|
||||
|
||||
public class InstanceInZone extends SlashEncodedIds {
|
||||
protected final Instance instance;
|
||||
import com.google.auto.value.AutoValue;
|
||||
|
||||
public InstanceInZone(Instance instance, String zoneId) {
|
||||
super(zoneId, checkNotNull(instance, "instance").name());
|
||||
this.instance = instance;
|
||||
@AutoValue
|
||||
public abstract class InstanceInZone {
|
||||
public abstract Instance instance();
|
||||
|
||||
public abstract String zoneId();
|
||||
|
||||
public static InstanceInZone create(Instance instance, String zoneId) {
|
||||
return new AutoValue_InstanceInZone(instance, zoneId);
|
||||
}
|
||||
|
||||
public Instance getInstance() {
|
||||
return instance;
|
||||
InstanceInZone(){
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) return true;
|
||||
if (obj == null || getClass() != obj.getClass()) return false;
|
||||
InstanceInZone that = InstanceInZone.class.cast(obj);
|
||||
return equal(this.instance, that.instance)
|
||||
&& equal(this.firstId, that.firstId)
|
||||
&& equal(this.secondId, that.secondId);
|
||||
public String slashEncode() {
|
||||
return zoneId() + "/" + instance().name();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "[instance=" + instance + ", zoneId=" + firstId + "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -16,39 +16,20 @@
|
||||
*/
|
||||
package org.jclouds.googlecomputeengine.compute.domain;
|
||||
|
||||
import static com.google.common.base.Objects.equal;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import org.jclouds.googlecomputeengine.domain.MachineType;
|
||||
|
||||
public class MachineTypeInZone extends SlashEncodedIds {
|
||||
protected final MachineType machineType;
|
||||
import com.google.auto.value.AutoValue;
|
||||
|
||||
public MachineTypeInZone(MachineType machineType, String zoneId) {
|
||||
super(zoneId, checkNotNull(machineType, "machineType").name());
|
||||
this.machineType = machineType;
|
||||
@AutoValue
|
||||
public abstract class MachineTypeInZone {
|
||||
public abstract MachineType machineType();
|
||||
|
||||
public abstract String zoneId();
|
||||
|
||||
public static MachineTypeInZone create(MachineType machineType, String zoneId) {
|
||||
return new AutoValue_MachineTypeInZone(machineType, zoneId);
|
||||
}
|
||||
|
||||
public MachineType machineType() {
|
||||
return machineType;
|
||||
MachineTypeInZone(){
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) return true;
|
||||
if (obj == null || getClass() != obj.getClass()) return false;
|
||||
MachineTypeInZone that = MachineTypeInZone.class.cast(obj);
|
||||
return equal(this.machineType, that.machineType)
|
||||
&& equal(this.firstId, that.firstId)
|
||||
&& equal(this.secondId, that.secondId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "[machineType=" + machineType + ", zoneId=" + firstId + "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -19,65 +19,31 @@ package org.jclouds.googlecomputeengine.compute.domain;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.auto.value.AutoValue;
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
public class SlashEncodedIds {
|
||||
@AutoValue
|
||||
public abstract class SlashEncodedIds {
|
||||
|
||||
public abstract String left();
|
||||
|
||||
public abstract String right();
|
||||
|
||||
public static SlashEncodedIds fromSlashEncoded(String id) {
|
||||
Iterable<String> parts = Splitter.on('/').split(checkNotNull(id, "id"));
|
||||
checkArgument(Iterables.size(parts) == 2, "id must be in format firstId/secondId");
|
||||
return new SlashEncodedIds(Iterables.get(parts, 0), Iterables.get(parts, 1));
|
||||
checkArgument(Iterables.size(parts) == 2, "id must be in format left/right");
|
||||
return from(Iterables.get(parts, 0), Iterables.get(parts, 1));
|
||||
}
|
||||
|
||||
public static SlashEncodedIds fromTwoIds(String firstId, String secondId) {
|
||||
return new SlashEncodedIds(firstId, secondId);
|
||||
SlashEncodedIds() {
|
||||
}
|
||||
|
||||
private static String slashEncodeTwoIds(String firstId, String secondId) {
|
||||
return checkNotNull(firstId, "firstId") + "/" + checkNotNull(secondId, "secondId");
|
||||
public static SlashEncodedIds from(String left, String right) {
|
||||
return new AutoValue_SlashEncodedIds(left, right);
|
||||
}
|
||||
|
||||
public String slashEncode() {
|
||||
return slashEncodeTwoIds(firstId, secondId);
|
||||
return left() + "/" + right();
|
||||
}
|
||||
|
||||
protected final String firstId;
|
||||
protected final String secondId;
|
||||
|
||||
protected SlashEncodedIds(String firstId, String secondId) {
|
||||
this.firstId = checkNotNull(firstId, "firstId");
|
||||
this.secondId = checkNotNull(secondId, "secondId");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(firstId, secondId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
SlashEncodedIds other = (SlashEncodedIds) obj;
|
||||
return Objects.equal(firstId, other.firstId) && Objects.equal(secondId, other.secondId);
|
||||
}
|
||||
|
||||
public String getFirstId() {
|
||||
return firstId;
|
||||
}
|
||||
|
||||
public String getSecondId() {
|
||||
return secondId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "[firstId=" + firstId + ", secondId=" + secondId + "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -73,17 +73,16 @@ import com.google.common.util.concurrent.Atomics;
|
||||
*/
|
||||
public class GoogleComputeEngineSecurityGroupExtension implements SecurityGroupExtension {
|
||||
|
||||
protected final Supplier<String> userProject;
|
||||
protected final GroupNamingConvention.Factory namingConvention;
|
||||
protected final LoadingCache<NetworkAndAddressRange, Network> networkCreator;
|
||||
protected final Function<Network, SecurityGroup> groupConverter;
|
||||
protected final GoogleComputeEngineApi api;
|
||||
protected final Predicate<AtomicReference<Operation>> operationDonePredicate;
|
||||
protected final long operationCompleteCheckInterval;
|
||||
protected final long operationCompleteCheckTimeout;
|
||||
private final Supplier<String> userProject;
|
||||
private final GroupNamingConvention.Factory namingConvention;
|
||||
private final LoadingCache<NetworkAndAddressRange, Network> networkCreator;
|
||||
private final Function<Network, SecurityGroup> groupConverter;
|
||||
private final GoogleComputeEngineApi api;
|
||||
private final Predicate<AtomicReference<Operation>> operationDonePredicate;
|
||||
private final long operationCompleteCheckInterval;
|
||||
private final long operationCompleteCheckTimeout;
|
||||
|
||||
@Inject
|
||||
public GoogleComputeEngineSecurityGroupExtension(GoogleComputeEngineApi api,
|
||||
@Inject GoogleComputeEngineSecurityGroupExtension(GoogleComputeEngineApi api,
|
||||
@UserProject Supplier<String> userProject, GroupNamingConvention.Factory namingConvention,
|
||||
LoadingCache<NetworkAndAddressRange, Network> networkCreator, Function<Network, SecurityGroup> groupConverter,
|
||||
@Named("global") Predicate<AtomicReference<Operation>> operationDonePredicate,
|
||||
@ -113,10 +112,9 @@ public class GoogleComputeEngineSecurityGroupExtension implements SecurityGroupE
|
||||
|
||||
@Override
|
||||
public Set<SecurityGroup> listSecurityGroupsForNode(String id) {
|
||||
SlashEncodedIds slashEncodedIds = SlashEncodedIds.fromSlashEncoded(id);
|
||||
SlashEncodedIds zoneAndId = SlashEncodedIds.fromSlashEncoded(id);
|
||||
|
||||
Instance instance = api.getInstanceApi(userProject.get())
|
||||
.getInZone(slashEncodedIds.getFirstId(), slashEncodedIds.getSecondId());
|
||||
Instance instance = api.getInstanceApi(userProject.get(), zoneAndId.left()).get(zoneAndId.right());
|
||||
|
||||
if (instance == null) {
|
||||
return ImmutableSet.of();
|
||||
|
@ -43,9 +43,6 @@ import com.google.common.base.Supplier;
|
||||
import com.google.common.collect.FluentIterable;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
/**
|
||||
* Transforms a google compute domain Instance into a generic NodeMetatada object.
|
||||
*/
|
||||
public final class InstanceInZoneToNodeMetadata implements Function<InstanceInZone, NodeMetadata> {
|
||||
|
||||
private final Map<Instance.Status, NodeMetadata.Status> toPortableNodeStatus;
|
||||
@ -56,11 +53,11 @@ public final class InstanceInZoneToNodeMetadata implements Function<InstanceInZo
|
||||
private final FirewallTagNamingConvention.Factory firewallTagNamingConvention;
|
||||
|
||||
@Inject InstanceInZoneToNodeMetadata(Map<Instance.Status, NodeMetadata.Status> toPortableNodeStatus,
|
||||
GroupNamingConvention.Factory namingConvention,
|
||||
@Memoized Supplier<Map<URI, ? extends Image>> images,
|
||||
@Memoized Supplier<Map<URI, ? extends Hardware>> hardwares,
|
||||
@Memoized Supplier<Map<URI, ? extends Location>> locations,
|
||||
FirewallTagNamingConvention.Factory firewallTagNamingConvention) {
|
||||
GroupNamingConvention.Factory namingConvention,
|
||||
@Memoized Supplier<Map<URI, ? extends Image>> images,
|
||||
@Memoized Supplier<Map<URI, ? extends Hardware>> hardwares,
|
||||
@Memoized Supplier<Map<URI, ? extends Location>> locations,
|
||||
FirewallTagNamingConvention.Factory firewallTagNamingConvention) {
|
||||
this.toPortableNodeStatus = toPortableNodeStatus;
|
||||
this.nodeNamingConvention = namingConvention.createWithoutPrefix();
|
||||
this.images = images;
|
||||
@ -70,10 +67,9 @@ public final class InstanceInZoneToNodeMetadata implements Function<InstanceInZo
|
||||
}
|
||||
|
||||
@Override public NodeMetadata apply(InstanceInZone instanceInZone) {
|
||||
Instance input = instanceInZone.getInstance();
|
||||
Instance input = instanceInZone.instance();
|
||||
|
||||
String group = groupFromMapOrName(input.metadata().items(),
|
||||
input.name(), nodeNamingConvention);
|
||||
String group = groupFromMapOrName(input.metadata().items(), input.name(), nodeNamingConvention);
|
||||
FluentIterable<String> tags = FluentIterable.from(input.tags().items());
|
||||
if (group != null) {
|
||||
tags = tags.filter(Predicates.not(firewallTagNamingConvention.get(group).isFirewallTag()));
|
||||
@ -81,13 +77,12 @@ public final class InstanceInZoneToNodeMetadata implements Function<InstanceInZo
|
||||
|
||||
NodeMetadataBuilder builder = new NodeMetadataBuilder();
|
||||
|
||||
builder.id(SlashEncodedIds.fromTwoIds(checkNotNull(locations.get().get(input.zone()),
|
||||
"location for %s", input.zone())
|
||||
.getId(), input.name()).slashEncode())
|
||||
Location location = checkNotNull(locations.get().get(input.zone()), "location for %s", input.zone());
|
||||
builder.id(SlashEncodedIds.from(location.getId(), input.name()).slashEncode())
|
||||
.name(input.name())
|
||||
.providerId(input.id())
|
||||
.hostname(input.name())
|
||||
.location(checkNotNull(locations.get().get(input.zone()), "location for %s", input.zone()))
|
||||
.location(location)
|
||||
.hardware(hardwares.get().get(input.machineType()))
|
||||
.status(toPortableNodeStatus.get(input.status()))
|
||||
.tags(tags)
|
||||
@ -99,8 +94,7 @@ public final class InstanceInZoneToNodeMetadata implements Function<InstanceInZo
|
||||
|
||||
if (input.metadata().items().containsKey(GCE_IMAGE_METADATA_KEY)) {
|
||||
try {
|
||||
URI imageUri = URI.create(input.metadata().items()
|
||||
.get(GCE_IMAGE_METADATA_KEY));
|
||||
URI imageUri = URI.create(input.metadata().items().get(GCE_IMAGE_METADATA_KEY));
|
||||
|
||||
Map<URI, ? extends Image> imagesMap = images.get();
|
||||
|
||||
|
@ -68,7 +68,7 @@ public class MachineTypeInZoneToHardware implements Function<MachineTypeInZone,
|
||||
input.machineType().zone());
|
||||
|
||||
return new HardwareBuilder()
|
||||
.id(SlashEncodedIds.fromTwoIds(input.machineType().zone(), input.machineType().name()).slashEncode())
|
||||
.id(SlashEncodedIds.from(input.machineType().zone(), input.machineType().name()).slashEncode())
|
||||
.location(location)
|
||||
.name(input.machineType().name())
|
||||
.hypervisor("kvm")
|
||||
|
@ -125,10 +125,10 @@ public class GoogleComputeEngineHttpApiModule extends HttpApiModule<GoogleComput
|
||||
return new Function<String, URI>() {
|
||||
@Override
|
||||
public URI apply(String input) {
|
||||
SlashEncodedIds slashEncodedIds = SlashEncodedIds.fromSlashEncoded(input);
|
||||
SlashEncodedIds zoneAndMachineType = SlashEncodedIds.fromSlashEncoded(input);
|
||||
return Uris.uriBuilder(endpoint.get()).appendPath("/projects/").appendPath(userProject.get())
|
||||
.appendPath("/zones/").appendPath(slashEncodedIds.getFirstId())
|
||||
.appendPath("/machineTypes/").appendPath(slashEncodedIds.getSecondId()).build();
|
||||
.appendPath("/zones/").appendPath(zoneAndMachineType.left())
|
||||
.appendPath("/machineTypes/").appendPath(zoneAndMachineType.right()).build();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -16,8 +16,11 @@
|
||||
*/
|
||||
package org.jclouds.googlecomputeengine.features;
|
||||
|
||||
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
|
||||
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
|
||||
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
|
||||
import static org.jclouds.googlecomputeengine.domain.Instance.NetworkInterface.AccessConfig;
|
||||
import static org.jclouds.googlecomputeengine.domain.Instance.SerialPortOutput;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
@ -31,7 +34,6 @@ import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
|
||||
import org.jclouds.googlecomputeengine.GoogleComputeEngineFallbacks.EmptyIteratorOnNotFoundOr404;
|
||||
@ -64,69 +66,50 @@ import org.jclouds.rest.binders.BindToJsonPayload;
|
||||
*/
|
||||
@SkipEncoding({'/', '='})
|
||||
@RequestFilters(OAuthAuthenticationFilter.class)
|
||||
@Path("/instances")
|
||||
@Consumes(APPLICATION_JSON)
|
||||
public interface InstanceApi {
|
||||
|
||||
/**
|
||||
* Returns the specified instance resource.
|
||||
*
|
||||
* @param zone zone the instance is in.
|
||||
* @param instanceName name of the instance resource to return.
|
||||
* @return an Instance resource
|
||||
*/
|
||||
/** Returns an instance by name or null if not found. */
|
||||
@Named("Instances:get")
|
||||
@GET
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances/{instance}")
|
||||
@Path("/{instance}")
|
||||
@OAuthScopes(COMPUTE_READONLY_SCOPE)
|
||||
@Fallback(NullOnNotFoundOr404.class)
|
||||
@Nullable
|
||||
Instance getInZone(@PathParam("zone") String zone, @PathParam("instance") String instanceName);
|
||||
Instance get(@PathParam("instance") String instance);
|
||||
|
||||
/**
|
||||
* Creates a instance resource in the specified project using the data included in the request.
|
||||
*
|
||||
*
|
||||
* @param instanceName this name of the instance to be created
|
||||
* @param zone the name of the zone where the instance will be created
|
||||
* @param instance this name of the instance to be created
|
||||
* @param template the instance template
|
||||
* @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
|
||||
* you, and look for the status field.
|
||||
*/
|
||||
@Named("Instances:insert")
|
||||
@POST
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances")
|
||||
@Produces(APPLICATION_JSON)
|
||||
@OAuthScopes({COMPUTE_SCOPE})
|
||||
@MapBinder(InstanceBinder.class)
|
||||
Operation createInZone(@PayloadParam("name") String instanceName, @PathParam("zone") String zone,
|
||||
@PayloadParam("template") InstanceTemplate template);
|
||||
|
||||
Operation create(@PayloadParam("name") String instance, @PayloadParam("template") InstanceTemplate template);
|
||||
|
||||
/**
|
||||
* Deletes the specified instance resource.
|
||||
*
|
||||
* @param zone the instance is in.
|
||||
* @param instanceName name of the instance resource to delete.
|
||||
* @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
|
||||
* you, and look for the status field. If the instance did not exist the result is null.
|
||||
*/
|
||||
/** Deletes an instance by name and returns the operation in progress, or null if not found. */
|
||||
@Named("Instances:delete")
|
||||
@DELETE
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances/{instance}")
|
||||
@Path("/{instance}")
|
||||
@OAuthScopes(COMPUTE_SCOPE)
|
||||
@Fallback(NullOnNotFoundOr404.class)
|
||||
@Nullable
|
||||
Operation deleteInZone(@PathParam("zone") String zone, @PathParam("instance") String instanceName);
|
||||
Operation delete(@PathParam("instance") String instance);
|
||||
|
||||
/**
|
||||
* Retrieves the list of instance resources available to the specified project.
|
||||
* By default the list as a maximum size of 100, if no options are provided or ListOptions#getMaxResults() has not
|
||||
* been set.
|
||||
*
|
||||
* @param zone zone instances are in
|
||||
* @param marker marks the beginning of the next list page
|
||||
* @param token marks the beginning of the next list page
|
||||
* @param listOptions listing options
|
||||
* @return a page of the list
|
||||
* @see ListOptions
|
||||
@ -134,45 +117,37 @@ public interface InstanceApi {
|
||||
*/
|
||||
@Named("Instances:list")
|
||||
@GET
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances")
|
||||
@OAuthScopes(COMPUTE_READONLY_SCOPE)
|
||||
@ResponseParser(ParseInstances.class)
|
||||
@Fallback(EmptyListPageOnNotFoundOr404.class)
|
||||
ListPage<Instance> listAtMarkerInZone(@PathParam("zone") String zone, @Nullable String marker,
|
||||
ListOptions listOptions);
|
||||
ListPage<Instance> listPage(@Nullable String token, ListOptions listOptions);
|
||||
|
||||
/**
|
||||
* @see InstanceApi#listInZone(String, org.jclouds.googlecomputeengine.options.ListOptions)
|
||||
* @see InstanceApi#list(org.jclouds.googlecomputeengine.options.ListOptions)
|
||||
*/
|
||||
@Named("Instances:list")
|
||||
@GET
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances")
|
||||
@OAuthScopes(COMPUTE_READONLY_SCOPE)
|
||||
@ResponseParser(ParseInstances.class)
|
||||
@Transform(ParseInstances.ToIteratorOfListPage.class)
|
||||
@Fallback(EmptyIteratorOnNotFoundOr404.class)
|
||||
Iterator<ListPage<Instance>> listInZone(@PathParam("zone") String zone);
|
||||
Iterator<ListPage<Instance>> list();
|
||||
|
||||
/**
|
||||
* @see InstanceApi#listInZone(String, org.jclouds.googlecomputeengine.options.ListOptions)
|
||||
* @see InstanceApi#list(org.jclouds.googlecomputeengine.options.ListOptions)
|
||||
*/
|
||||
@Named("Instances:list")
|
||||
@GET
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances")
|
||||
@OAuthScopes(COMPUTE_READONLY_SCOPE)
|
||||
@ResponseParser(ParseInstances.class)
|
||||
@Transform(ParseInstances.ToIteratorOfListPage.class)
|
||||
@Fallback(EmptyIteratorOnNotFoundOr404.class)
|
||||
Iterator<ListPage<Instance>> listInZone(@PathParam("zone") String zone, ListOptions options);
|
||||
Iterator<ListPage<Instance>> list(ListOptions options);
|
||||
|
||||
/**
|
||||
* Adds an access config to an instance's network interface.
|
||||
*
|
||||
* @param zone zone instance is in
|
||||
* @param instanceName the instance name.
|
||||
* @param instance the instance name.
|
||||
* @param accessConfig the AccessConfig to add.
|
||||
* @param networkInterfaceName network interface name.
|
||||
* @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
|
||||
@ -180,21 +155,18 @@ public interface InstanceApi {
|
||||
*/
|
||||
@Named("Instances:addAccessConfig")
|
||||
@POST
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances/{instance}/addAccessConfig")
|
||||
@Produces(APPLICATION_JSON)
|
||||
@Path("/{instance}/addAccessConfig")
|
||||
@OAuthScopes({COMPUTE_SCOPE})
|
||||
Operation addAccessConfigToNicInZone(@PathParam("zone") String zone,
|
||||
@PathParam("instance") String instanceName,
|
||||
@BinderParam(BindToJsonPayload.class)
|
||||
Instance.NetworkInterface.AccessConfig accessConfig,
|
||||
@QueryParam("network_interface") String networkInterfaceName);
|
||||
Operation addAccessConfigToNic(@PathParam("instance") String instance,
|
||||
@BinderParam(BindToJsonPayload.class)
|
||||
AccessConfig accessConfig,
|
||||
@QueryParam("network_interface") String networkInterfaceName);
|
||||
|
||||
/**
|
||||
* Deletes an access config from an instance's network interface.
|
||||
*
|
||||
* @param zone zone instance is in
|
||||
* @param instanceName the instance name.
|
||||
* @param instance the instance name.
|
||||
* @param accessConfigName the name of the access config to delete
|
||||
* @param networkInterfaceName network interface name.
|
||||
* @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
|
||||
@ -202,50 +174,41 @@ public interface InstanceApi {
|
||||
*/
|
||||
@Named("Instances:deleteAccessConfig")
|
||||
@DELETE
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances/{instance}/deleteAccessConfig")
|
||||
@Path("/{instance}/deleteAccessConfig")
|
||||
@OAuthScopes(COMPUTE_SCOPE)
|
||||
Operation deleteAccessConfigFromNicInZone(@PathParam("zone") String zone,
|
||||
@PathParam("instance") String instanceName,
|
||||
@QueryParam("access_config") String accessConfigName,
|
||||
@QueryParam("network_interface") String networkInterfaceName);
|
||||
Operation deleteAccessConfigFromNic(@PathParam("instance") String instance,
|
||||
@QueryParam("access_config") String accessConfigName,
|
||||
@QueryParam("network_interface") String networkInterfaceName);
|
||||
|
||||
/**
|
||||
* Returns the specified instance's serial port output.
|
||||
*
|
||||
* @param zone zone instance is in
|
||||
* @param instanceName the instance name.
|
||||
* @param instance the instance name.
|
||||
* @return if successful, this method returns a SerialPortOutput containing the instance's serial output.
|
||||
*/
|
||||
@Named("Instances:serialPort")
|
||||
@GET
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances/{instance}/serialPort")
|
||||
@Path("/{instance}/serialPort")
|
||||
@OAuthScopes(COMPUTE_READONLY_SCOPE)
|
||||
Instance.SerialPortOutput getSerialPortOutputInZone(@PathParam("zone") String zone,
|
||||
@PathParam("instance") String instanceName);
|
||||
SerialPortOutput getSerialPortOutput(@PathParam("instance") String instance);
|
||||
|
||||
/**
|
||||
* Hard-resets the instance.
|
||||
*
|
||||
* @param zone the zone the instance is in
|
||||
* @param instanceName the instance name
|
||||
* @param instance the instance name
|
||||
* @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
|
||||
* you, and look for the status field.
|
||||
*/
|
||||
@Named("Instances:reset")
|
||||
@POST
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances/{instance}/reset")
|
||||
@Path("/{instance}/reset")
|
||||
@OAuthScopes(COMPUTE_SCOPE)
|
||||
Operation resetInZone(@PathParam("zone") String zone,
|
||||
@PathParam("instance") String instanceName);
|
||||
Operation reset(@PathParam("instance") String instance);
|
||||
|
||||
/**
|
||||
* Attaches a disk to an instance
|
||||
*
|
||||
* @param zone The zone the instance is in.
|
||||
* @param instanceName The instance name to attach to
|
||||
* @param instance The instance name to attach to
|
||||
* @param attachDiskOptions The options for attaching the disk.
|
||||
*
|
||||
* @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
|
||||
@ -253,19 +216,16 @@ public interface InstanceApi {
|
||||
*/
|
||||
@Named("Instances:attachDisk")
|
||||
@POST
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances/{instance}/attachDisk")
|
||||
@Produces(APPLICATION_JSON)
|
||||
@Path("/{instance}/attachDisk")
|
||||
@OAuthScopes(COMPUTE_SCOPE)
|
||||
Operation attachDiskInZone(@PathParam("zone") String zone,
|
||||
@PathParam("instance") String instanceName,
|
||||
@BinderParam(BindToJsonPayload.class) AttachDiskOptions attachDiskOptions);
|
||||
Operation attachDisk(@PathParam("instance") String instance,
|
||||
@BinderParam(BindToJsonPayload.class) AttachDiskOptions attachDiskOptions);
|
||||
|
||||
/**
|
||||
* Detaches an attached disk from an instance
|
||||
*
|
||||
* @param zone The zone the instance is in.
|
||||
* @param instanceName The instance name to attach to
|
||||
* @param instance The instance name to attach to
|
||||
* @param deviceName The device name of the disk to detach.
|
||||
*
|
||||
* @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
|
||||
@ -273,12 +233,9 @@ public interface InstanceApi {
|
||||
*/
|
||||
@Named("Instances:detachDisk")
|
||||
@POST
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Path("/zones/{zone}/instances/{instance}/detachDisk")
|
||||
@Path("/{instance}/detachDisk")
|
||||
@OAuthScopes(COMPUTE_SCOPE)
|
||||
Operation detachDiskInZone(@PathParam("zone") String zone,
|
||||
@PathParam("instance") String instanceName,
|
||||
@QueryParam("deviceName") String deviceName);
|
||||
Operation detachDisk(@PathParam("instance") String instance, @QueryParam("deviceName") String deviceName);
|
||||
|
||||
/**
|
||||
* Sets metadata for an instance using the data included in the request.
|
||||
@ -287,13 +244,12 @@ public interface InstanceApi {
|
||||
* if there are pre-existing metadata items that must be kept these must be fetched first and then re-set on the
|
||||
* new Metadata, e.g.
|
||||
* <pre><tt>
|
||||
* Metadata.Builder current = instanceApi.getInZone("us-central1-a", "myInstance").getMetadata().toBuilder();
|
||||
* Metadata.Builder current = instanceApi.get("us-central1-a", "myInstance").getMetadata().toBuilder();
|
||||
* current.addItem("newItem","newItemValue");
|
||||
* instanceApi.setMetadataInZone("us-central1-a", "myInstance", current.build());
|
||||
* instanceApi.setMetadata("us-central1-a", "myInstance", current.build());
|
||||
* </tt></pre>
|
||||
*
|
||||
* @param zone The zone the instance is in
|
||||
* @param instanceName The name of the instance
|
||||
* @param instance The name of the instance
|
||||
* @param metadata the metadata to set
|
||||
* @param fingerprint The current fingerprint for the items
|
||||
*
|
||||
@ -302,21 +258,18 @@ public interface InstanceApi {
|
||||
*/
|
||||
@Named("Instances:setMetadata")
|
||||
@POST
|
||||
@Path("/zones/{zone}/instances/{instance}/setMetadata")
|
||||
@Path("/{instance}/setMetadata")
|
||||
@OAuthScopes(COMPUTE_SCOPE)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Produces(APPLICATION_JSON)
|
||||
@MapBinder(MetadataBinder.class)
|
||||
Operation setMetadataInZone(@PathParam("zone") String zone,
|
||||
@PathParam("instance") String instanceName,
|
||||
@PayloadParam("items") Map<String, String> metadata,
|
||||
@PayloadParam("fingerprint") String fingerprint);
|
||||
Operation setMetadata(@PathParam("instance") String instance,
|
||||
@PayloadParam("items") Map<String, String> metadata,
|
||||
@PayloadParam("fingerprint") String fingerprint);
|
||||
|
||||
/**
|
||||
* Lists items for an instance
|
||||
*
|
||||
* @param zone The zone the instance is in
|
||||
* @param instanceName the name of the instance
|
||||
* @param instance the name of the instance
|
||||
* @param items A set of items
|
||||
* @param fingerprint The current fingerprint for the items
|
||||
* @return an Operations resource. To check on the status of an operation, poll the Operations resource returned
|
||||
@ -324,15 +277,12 @@ public interface InstanceApi {
|
||||
*/
|
||||
@Named("Instances:setTags")
|
||||
@POST
|
||||
@Path("/zones/{zone}/instances/{instance}/setTags")
|
||||
@Path("/{instance}/setTags")
|
||||
@OAuthScopes(COMPUTE_SCOPE)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Produces(APPLICATION_JSON)
|
||||
@MapBinder(BindToJsonPayload.class)
|
||||
Operation setTagsInZone(@PathParam("zone") String zone,
|
||||
@PathParam("instance") String instanceName,
|
||||
@PayloadParam("items") Iterable<String> items,
|
||||
@PayloadParam("fingerprint") String fingerprint);
|
||||
|
||||
Operation setTags(@PathParam("instance") String instance,
|
||||
@PayloadParam("items") Iterable<String> items,
|
||||
@PayloadParam("fingerprint") String fingerprint);
|
||||
}
|
||||
|
||||
|
@ -44,12 +44,11 @@ public final class ParseInstances extends ParseJson<ListPage<Instance>> {
|
||||
this.api = api;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Function<String, ListPage<Instance>> fetchNextPage(final String project, final String zone,
|
||||
@Override protected Function<String, ListPage<Instance>> fetchNextPage(final String project, final String zone,
|
||||
final ListOptions options) {
|
||||
return new Function<String, ListPage<Instance>>() {
|
||||
@Override public ListPage<Instance> apply(String input) {
|
||||
return api.getInstanceApi(project).listAtMarkerInZone(zone, input, options);
|
||||
return api.getInstanceApi(project, zone).listPage(input, options);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -70,35 +70,20 @@ public class ListOptions extends BaseHttpRequestOptions {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Marks the beginning of the next list page
|
||||
*/
|
||||
public ListOptions marker(String marker) {
|
||||
this.queryParameters.put("pageToken", checkNotNull(marker, "marker"));
|
||||
return this;
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
|
||||
/**
|
||||
* @see ListOptions#filter(String)
|
||||
*/
|
||||
public ListOptions filter(String filter) {
|
||||
public static ListOptions filter(String filter) {
|
||||
return new ListOptions().filter(filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ListOptions#maxResults(Integer)
|
||||
*/
|
||||
public ListOptions maxResults(Integer maxResults) {
|
||||
public static ListOptions maxResults(Integer maxResults) {
|
||||
return new ListOptions().maxResults(maxResults);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ListOptions#marker(String)
|
||||
*/
|
||||
public ListOptions marker(String marker) {
|
||||
return new ListOptions().marker(marker);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -218,7 +218,7 @@ public class InstanceInZoneToNodeMetadataTest {
|
||||
|
||||
@Test
|
||||
public final void testTagFilteringWorks() {
|
||||
InstanceInZone instanceInZone = new InstanceInZone(instance, "zoneId");
|
||||
InstanceInZone instanceInZone = InstanceInZone.create(instance, "zoneId");
|
||||
NodeMetadata nodeMetadata = groupGroupNodeParser.apply(instanceInZone);
|
||||
assertEquals(nodeMetadata.getId(), "id/test-0");
|
||||
assertEquals(nodeMetadata.getTags(), ImmutableSet.<String>of(
|
||||
@ -229,7 +229,7 @@ public class InstanceInZoneToNodeMetadataTest {
|
||||
|
||||
@Test
|
||||
public final void testInstanceWithGroupNull() {
|
||||
InstanceInZone instanceInZone = new InstanceInZone(instance, "zoneId");
|
||||
InstanceInZone instanceInZone = InstanceInZone.create(instance, "zoneId");
|
||||
NodeMetadata nodeMetadata = groupNullNodeParser.apply(instanceInZone);
|
||||
assertEquals(nodeMetadata.getId(), "id/test-0");
|
||||
assertEquals(nodeMetadata.getTags(), ImmutableSet.<String>of("aTag", "Group-port-42"));
|
||||
|
@ -88,9 +88,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
|
||||
InstanceApi api = requestsSendResponses(
|
||||
requestForScopes(COMPUTE_READONLY_SCOPE), TOKEN_RESPONSE,
|
||||
GET_INSTANCE_REQUEST, GET_INSTANCE_RESPONSE).getInstanceApi("myproject");
|
||||
GET_INSTANCE_REQUEST, GET_INSTANCE_RESPONSE).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertEquals(api.getInZone("us-central1-a", "test-1"), new ParseInstanceTest().expected());
|
||||
assertEquals(api.get("test-1"), new ParseInstanceTest().expected());
|
||||
}
|
||||
|
||||
public void testGetInstanceResponseIs4xx() throws Exception {
|
||||
@ -98,9 +98,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
HttpResponse operationResponse = HttpResponse.builder().statusCode(404).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
|
||||
TOKEN_RESPONSE, GET_INSTANCE_REQUEST, operationResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, GET_INSTANCE_REQUEST, operationResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertNull(api.getInZone("us-central1-a", "test-1"));
|
||||
assertNull(api.get("test-1"));
|
||||
}
|
||||
|
||||
public void testGetInstanceSerialPortOutput() throws Exception {
|
||||
@ -116,9 +116,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
|
||||
TOKEN_RESPONSE, get, operationResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, get, operationResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertEquals(api.getSerialPortOutputInZone("us-central1-a", "test-1"), new ParseInstanceSerialOutputTest().expected());
|
||||
assertEquals(api.getSerialPortOutput("test-1"), new ParseInstanceSerialOutputTest().expected());
|
||||
}
|
||||
|
||||
public void testInsertInstanceResponseIs2xxNoOptions() {
|
||||
@ -135,12 +135,12 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
TOKEN_RESPONSE, GET_PROJECT_REQUEST, GET_PROJECT_RESPONSE,
|
||||
requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, insert,
|
||||
CREATE_INSTANCE_RESPONSE)).getInstanceApi("myproject");
|
||||
CREATE_INSTANCE_RESPONSE)).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
InstanceTemplate options = new InstanceTemplate().machineTypeName("us-central1-a/n1-standard-1")
|
||||
.addNetworkInterface(URI.create(BASE_URL + "/myproject/global/networks/default"));
|
||||
|
||||
assertEquals(api.createInZone("test-1", "us-central1-a", options), new ParseZoneOperationTest().expected());
|
||||
assertEquals(api.create("test-1", options), new ParseZoneOperationTest().expected());
|
||||
}
|
||||
|
||||
public void testInsertInstanceResponseIs2xxAllOptions() {
|
||||
@ -159,7 +159,7 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
InstanceApi api = requestsSendResponses(ImmutableMap.of(requestForScopes(COMPUTE_READONLY_SCOPE),
|
||||
TOKEN_RESPONSE, GET_PROJECT_REQUEST, GET_PROJECT_RESPONSE,
|
||||
requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, insert, insertInstanceResponse)).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, insert, insertInstanceResponse)).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
InstanceTemplate options = new InstanceTemplate().machineTypeName("us-central1-a/n1-standard-1")
|
||||
.addNetworkInterface(
|
||||
@ -172,8 +172,7 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
.addServiceAccount(Instance.ServiceAccount.create("default", ImmutableList.of("myscope")))
|
||||
.addMetadata("aKey", "aValue");
|
||||
|
||||
assertEquals(api.createInZone("test-0", "us-central1-a", options),
|
||||
new ParseZoneOperationTest().expected());
|
||||
assertEquals(api.create("test-0", options), new ParseZoneOperationTest().expected());
|
||||
}
|
||||
|
||||
public void testDeleteInstanceResponseIs2xx() {
|
||||
@ -188,9 +187,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
.payload(payloadFromResource("/zone_operation.json")).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, delete, deleteResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, delete, deleteResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertEquals(api.deleteInZone("us-central1-a", "test-1"),
|
||||
assertEquals(api.delete("test-1"),
|
||||
new ParseZoneOperationTest().expected());
|
||||
}
|
||||
|
||||
@ -205,19 +204,18 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
HttpResponse deleteResponse = HttpResponse.builder().statusCode(404).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, delete, deleteResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, delete, deleteResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertNull(api.deleteInZone("us-central1-a", "test-1"));
|
||||
assertNull(api.delete("test-1"));
|
||||
}
|
||||
|
||||
public void testListInstancesResponseIs2xx() {
|
||||
|
||||
InstanceApi api = requestsSendResponses(
|
||||
requestForScopes(COMPUTE_READONLY_SCOPE), TOKEN_RESPONSE,
|
||||
LIST_INSTANCES_REQUEST, LIST_INSTANCES_RESPONSE).getInstanceApi("myproject");
|
||||
LIST_INSTANCES_REQUEST, LIST_INSTANCES_RESPONSE).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertEquals(api.listInZone("us-central1-a").next().toString(),
|
||||
new ParseInstanceListTest().expected().toString());
|
||||
assertEquals(api.list().next().toString(), new ParseInstanceListTest().expected().toString());
|
||||
}
|
||||
|
||||
public void testListInstancesResponseIs4xx() {
|
||||
@ -231,9 +229,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
HttpResponse operationResponse = HttpResponse.builder().statusCode(404).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
|
||||
TOKEN_RESPONSE, list, operationResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, list, operationResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertFalse(api.listInZone("us-central1-a").hasNext());
|
||||
assertFalse(api.list().hasNext());
|
||||
}
|
||||
|
||||
public void testSetInstanceMetadataResponseIs2xx() {
|
||||
@ -250,9 +248,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
.payload(payloadFromResource("/zone_operation.json")).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, setMetadata, setMetadataResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, setMetadata, setMetadataResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertEquals(api.setMetadataInZone("us-central1-a", "test-1", ImmutableMap.of("foo", "bar"), "efgh"),
|
||||
assertEquals(api.setMetadata("test-1", ImmutableMap.of("foo", "bar"), "efgh"),
|
||||
new ParseZoneOperationTest().expected());
|
||||
}
|
||||
|
||||
@ -270,9 +268,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
HttpResponse setMetadataResponse = HttpResponse.builder().statusCode(404).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, setMetadata, setMetadataResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, setMetadata, setMetadataResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
api.setMetadataInZone("us-central1-a", "test-1", ImmutableMap.of("foo", "bar"), "efgh");
|
||||
api.setMetadata("test-1", ImmutableMap.of("foo", "bar"), "efgh");
|
||||
}
|
||||
|
||||
public void testSetInstanceTagsResponseIs2xx() {
|
||||
@ -289,9 +287,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
.payload(payloadFromResource("/zone_operation.json")).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, setTags, setTagsResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, setTags, setTagsResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertEquals(api.setTagsInZone("us-central1-a", "test-1", ImmutableList.of("foo", "bar"), "efgh"),
|
||||
assertEquals(api.setTags("test-1", ImmutableList.of("foo", "bar"), "efgh"),
|
||||
new ParseZoneOperationTest().expected());
|
||||
}
|
||||
|
||||
@ -309,9 +307,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
HttpResponse setTagsResponse = HttpResponse.builder().statusCode(404).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, setTags, setTagsResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, setTags, setTagsResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
api.setTagsInZone("us-central1-a", "test-1", ImmutableList.of("foo", "bar"), "efgh");
|
||||
api.setTags("test-1", ImmutableList.of("foo", "bar"), "efgh");
|
||||
}
|
||||
|
||||
public void testResetInstanceResponseIs2xx() {
|
||||
@ -326,9 +324,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
.payload(payloadFromResource("/zone_operation.json")).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, reset, resetResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, reset, resetResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertEquals(api.resetInZone("us-central1-a", "test-1"),
|
||||
assertEquals(api.reset("test-1"),
|
||||
new ParseZoneOperationTest().expected());
|
||||
}
|
||||
|
||||
@ -344,9 +342,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
HttpResponse resetResponse = HttpResponse.builder().statusCode(404).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, reset, resetResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, reset, resetResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
api.resetInZone("us-central1-a", "test-1");
|
||||
api.reset("test-1");
|
||||
}
|
||||
|
||||
public void testAttachDiskResponseIs2xx() {
|
||||
@ -363,9 +361,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
.payload(payloadFromResource("/zone_operation.json")).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, attach, attachResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, attach, attachResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertEquals(api.attachDiskInZone("us-central1-a", "test-1",
|
||||
assertEquals(api.attachDisk("test-1",
|
||||
new AttachDiskOptions()
|
||||
.mode(DiskMode.READ_ONLY)
|
||||
.source(URI.create(BASE_URL + "/myproject/zones/us-central1-a/disks/testimage1"))
|
||||
@ -387,9 +385,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
HttpResponse attachResponse = HttpResponse.builder().statusCode(404).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, attach, attachResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, attach, attachResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
api.attachDiskInZone("us-central1-a", "test-1",
|
||||
api.attachDisk("test-1",
|
||||
new AttachDiskOptions()
|
||||
.mode(DiskMode.READ_ONLY)
|
||||
.source(URI.create(BASE_URL + "/myproject/zones/us-central1-a/disks/testimage1"))
|
||||
@ -410,9 +408,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
.payload(payloadFromResource("/zone_operation.json")).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, detach, detachResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, detach, detachResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
assertEquals(api.detachDiskInZone("us-central1-a", "test-1", "test-disk-1"),
|
||||
assertEquals(api.detachDisk("test-1", "test-disk-1"),
|
||||
new ParseZoneOperationTest().expected());
|
||||
}
|
||||
|
||||
@ -429,9 +427,9 @@ public class InstanceApiExpectTest extends BaseGoogleComputeEngineApiExpectTest
|
||||
HttpResponse detachResponse = HttpResponse.builder().statusCode(404).build();
|
||||
|
||||
InstanceApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
|
||||
TOKEN_RESPONSE, detach, detachResponse).getInstanceApi("myproject");
|
||||
TOKEN_RESPONSE, detach, detachResponse).getInstanceApi("myproject", "us-central1-a");
|
||||
|
||||
api.detachDiskInZone("us-central1-a", "test-1", "test-disk-1");
|
||||
api.detachDisk("test-1", "test-disk-1");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -16,6 +16,7 @@
|
||||
*/
|
||||
package org.jclouds.googlecomputeengine.features;
|
||||
|
||||
import static org.jclouds.googlecomputeengine.options.ListOptions.Builder.filter;
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertNotNull;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
@ -97,7 +98,7 @@ public class InstanceApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
|
||||
}
|
||||
|
||||
private InstanceApi api() {
|
||||
return api.getInstanceApi(userProject.get());
|
||||
return api.getInstanceApi(userProject.get(), DEFAULT_ZONE_NAME);
|
||||
}
|
||||
|
||||
private DiskApi diskApi() {
|
||||
@ -120,26 +121,26 @@ public class InstanceApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
|
||||
assertZoneOperationDoneSuccessfully(
|
||||
diskApi().createInZone("instance-live-test-disk", DEFAULT_DISK_SIZE_GB, DEFAULT_ZONE_NAME), TIME_WAIT);
|
||||
|
||||
assertZoneOperationDoneSuccessfully(api().createInZone(INSTANCE_NAME, DEFAULT_ZONE_NAME, instance), TIME_WAIT);
|
||||
assertZoneOperationDoneSuccessfully(api().create(INSTANCE_NAME, instance), TIME_WAIT);
|
||||
|
||||
}
|
||||
|
||||
@Test(groups = "live", dependsOnMethods = "testInsertInstance")
|
||||
public void testGetInstance() {
|
||||
|
||||
Instance instance = api().getInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME);
|
||||
Instance instance = api().get(INSTANCE_NAME);
|
||||
assertNotNull(instance);
|
||||
assertInstanceEquals(instance, this.instance);
|
||||
}
|
||||
|
||||
@Test(groups = "live", dependsOnMethods = "testListInstance")
|
||||
public void testSetMetadataForInstance() {
|
||||
Instance originalInstance = api().getInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME);
|
||||
assertZoneOperationDoneSuccessfully(api().setMetadataInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME,
|
||||
Instance originalInstance = api().get(INSTANCE_NAME);
|
||||
assertZoneOperationDoneSuccessfully(api().setMetadata(INSTANCE_NAME,
|
||||
ImmutableMap.of(METADATA_ITEM_KEY, METADATA_ITEM_VALUE), originalInstance.metadata().fingerprint()),
|
||||
TIME_WAIT);
|
||||
|
||||
Instance modifiedInstance = api().getInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME);
|
||||
Instance modifiedInstance = api().get(INSTANCE_NAME);
|
||||
|
||||
assertTrue(modifiedInstance.metadata().items().containsKey(METADATA_ITEM_KEY));
|
||||
assertEquals(modifiedInstance.metadata().items().get(METADATA_ITEM_KEY),
|
||||
@ -149,12 +150,11 @@ public class InstanceApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
|
||||
|
||||
@Test(groups = "live", dependsOnMethods = "testListInstance")
|
||||
public void testSetTagsForInstance() {
|
||||
Instance originalInstance = api().getInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME);
|
||||
Instance originalInstance = api().get(INSTANCE_NAME);
|
||||
assertZoneOperationDoneSuccessfully(
|
||||
api().setTagsInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME, TAGS, originalInstance.tags().fingerprint()),
|
||||
TIME_WAIT);
|
||||
api().setTags(INSTANCE_NAME, TAGS, originalInstance.tags().fingerprint()), TIME_WAIT);
|
||||
|
||||
Instance modifiedInstance = api().getInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME);
|
||||
Instance modifiedInstance = api().get(INSTANCE_NAME);
|
||||
|
||||
assertTrue(modifiedInstance.tags().items().containsAll(TAGS));
|
||||
assertNotNull(modifiedInstance.tags().fingerprint());
|
||||
@ -164,13 +164,13 @@ public class InstanceApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
|
||||
public void testAttachDiskToInstance() {
|
||||
assertZoneOperationDoneSuccessfully(diskApi().createInZone(ATTACH_DISK_NAME, 1, DEFAULT_ZONE_NAME), TIME_WAIT);
|
||||
|
||||
Instance originalInstance = api().getInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME);
|
||||
assertZoneOperationDoneSuccessfully(api().attachDiskInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME,
|
||||
Instance originalInstance = api().get(INSTANCE_NAME);
|
||||
assertZoneOperationDoneSuccessfully(api().attachDisk(INSTANCE_NAME,
|
||||
new AttachDiskOptions().type(DiskType.PERSISTENT)
|
||||
.source(getDiskUrl(userProject.get(), ATTACH_DISK_NAME)).mode(DiskMode.READ_ONLY)
|
||||
.deviceName(ATTACH_DISK_DEVICE_NAME)), TIME_WAIT);
|
||||
|
||||
Instance modifiedInstance = api().getInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME);
|
||||
Instance modifiedInstance = api().get(INSTANCE_NAME);
|
||||
|
||||
assertTrue(modifiedInstance.disks().size() > originalInstance.disks().size());
|
||||
assertTrue(Iterables.any(modifiedInstance.disks(), new Predicate<AttachedDisk>() {
|
||||
@ -185,11 +185,10 @@ public class InstanceApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
|
||||
|
||||
@Test(groups = "live", dependsOnMethods = "testAttachDiskToInstance")
|
||||
public void testDetachDiskFromInstance() {
|
||||
Instance originalInstance = api().getInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME);
|
||||
assertZoneOperationDoneSuccessfully(
|
||||
api().detachDiskInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME, ATTACH_DISK_DEVICE_NAME), TIME_WAIT);
|
||||
Instance originalInstance = api().get(INSTANCE_NAME);
|
||||
assertZoneOperationDoneSuccessfully(api().detachDisk(INSTANCE_NAME, ATTACH_DISK_DEVICE_NAME), TIME_WAIT);
|
||||
|
||||
Instance modifiedInstance = api().getInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME);
|
||||
Instance modifiedInstance = api().get(INSTANCE_NAME);
|
||||
|
||||
assertTrue(modifiedInstance.disks().size() < originalInstance.disks().size());
|
||||
|
||||
@ -199,8 +198,7 @@ public class InstanceApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
|
||||
@Test(groups = "live", dependsOnMethods = "testInsertInstance")
|
||||
public void testListInstance() {
|
||||
|
||||
Iterator<ListPage<Instance>> instances = api().listInZone(DEFAULT_ZONE_NAME, new ListOptions.Builder()
|
||||
.filter("name eq " + INSTANCE_NAME));
|
||||
Iterator<ListPage<Instance>> instances = api().list(filter("name eq " + INSTANCE_NAME));
|
||||
|
||||
List<Instance> instancesAsList = instances.next();
|
||||
|
||||
@ -212,12 +210,12 @@ public class InstanceApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
|
||||
|
||||
@Test(groups = "live", dependsOnMethods = "testDetachDiskFromInstance")
|
||||
public void testResetInstance() {
|
||||
assertZoneOperationDoneSuccessfully(api().resetInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME), TIME_WAIT);
|
||||
assertZoneOperationDoneSuccessfully(api().reset(INSTANCE_NAME), TIME_WAIT);
|
||||
}
|
||||
|
||||
@Test(groups = "live", dependsOnMethods = "testResetInstance")
|
||||
public void testDeleteInstance() {
|
||||
assertZoneOperationDoneSuccessfully(api().deleteInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME), TIME_WAIT);
|
||||
assertZoneOperationDoneSuccessfully(api().delete(INSTANCE_NAME), TIME_WAIT);
|
||||
assertZoneOperationDoneSuccessfully(api.getDiskApi(userProject.get()).deleteInZone(DEFAULT_ZONE_NAME, DISK_NAME),
|
||||
TIME_WAIT);
|
||||
assertZoneOperationDoneSuccessfully(
|
||||
@ -234,7 +232,7 @@ public class InstanceApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
|
||||
@AfterClass(groups = { "integration", "live" })
|
||||
protected void tearDownContext() {
|
||||
try {
|
||||
waitZoneOperationDone(api().deleteInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME), TIME_WAIT);
|
||||
waitZoneOperationDone(api().delete(INSTANCE_NAME), TIME_WAIT);
|
||||
waitZoneOperationDone(api.getDiskApi(userProject.get()).deleteInZone(DEFAULT_ZONE_NAME, DISK_NAME),
|
||||
TIME_WAIT);
|
||||
waitZoneOperationDone(api.getDiskApi(userProject.get()).deleteInZone(DEFAULT_ZONE_NAME, BOOT_DISK_NAME),
|
||||
|
@ -70,7 +70,7 @@ public class TargetPoolApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
|
||||
|
||||
@Test(groups = "live")
|
||||
public void testCreateInstanceAndHealthCheck(){
|
||||
InstanceApi instanceApi = api.getInstanceApi(userProject.get());
|
||||
InstanceApi instanceApi = api.getInstanceApi(userProject.get(), DEFAULT_ZONE_NAME);
|
||||
HttpHealthCheckApi httpHealthCheckApi = api.getHttpHealthCheckApi(userProject.get());
|
||||
|
||||
ListPage<Image> list = api.getImageApi("centos-cloud").list(new ListOptions.Builder().filter("name eq centos.*"))
|
||||
@ -109,9 +109,9 @@ public class TargetPoolApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
|
||||
TIME_WAIT_LONG);
|
||||
|
||||
// Create an instance.
|
||||
assertZoneOperationDoneSuccessfully(instanceApi.createInZone(INSTANCE_NAME, DEFAULT_ZONE_NAME, instanceTemplate),
|
||||
assertZoneOperationDoneSuccessfully(instanceApi.create(INSTANCE_NAME, instanceTemplate),
|
||||
TIME_WAIT_LONG);
|
||||
Instance instance = instanceApi.getInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME);
|
||||
Instance instance = instanceApi.get(INSTANCE_NAME);
|
||||
instances = new ArrayList<URI>();
|
||||
instances.add(instance.selfLink());
|
||||
|
||||
@ -244,11 +244,11 @@ public class TargetPoolApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
|
||||
|
||||
@AfterClass(groups = { "integration", "live" })
|
||||
public void testCleanup(){
|
||||
InstanceApi instanceApi = api.getInstanceApi(userProject.get());
|
||||
InstanceApi instanceApi = api.getInstanceApi(userProject.get(), DEFAULT_ZONE_NAME);
|
||||
HttpHealthCheckApi httpHealthCheckApi = api.getHttpHealthCheckApi(userProject.get());
|
||||
|
||||
try {
|
||||
waitZoneOperationDone(instanceApi.deleteInZone(DEFAULT_ZONE_NAME, INSTANCE_NAME), TIME_WAIT_LONG);
|
||||
waitZoneOperationDone(instanceApi.delete(INSTANCE_NAME), TIME_WAIT_LONG);
|
||||
|
||||
waitZoneOperationDone(api.getDiskApi(userProject.get()).deleteInZone(DEFAULT_ZONE_NAME, BOOT_DISK_NAME),
|
||||
TIME_WAIT);
|
||||
|
Loading…
x
Reference in New Issue
Block a user