mirror of https://github.com/apache/jclouds.git
Issue 690:Update to guava 10.0.1
This commit is contained in:
parent
07fdaaffc8
commit
bbbd5a35fc
|
@ -62,7 +62,6 @@ import com.google.common.cache.Cache;
|
|||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Provides;
|
||||
import com.google.inject.Scopes;
|
||||
|
@ -136,13 +135,6 @@ public class EC2ComputeServiceDependenciesModule extends AbstractModule {
|
|||
return CacheBuilder.newBuilder().build(in);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
// keys that we know about.
|
||||
protected Map<RegionAndName, KeyPair> knownKeys(){
|
||||
return Maps.newConcurrentMap();
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
@Named("SECURITY")
|
||||
|
@ -157,12 +149,5 @@ public class EC2ComputeServiceDependenciesModule extends AbstractModule {
|
|||
@Named(PROPERTY_EC2_TIMEOUT_SECURITYGROUP_PRESENT) long msDelay) {
|
||||
return new RetryablePredicate<RegionAndName>(in, msDelay, 100l, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
// keys that we know about.
|
||||
protected Map<RegionAndName, Image> knownImages(){
|
||||
return Maps.newConcurrentMap();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,8 +20,6 @@ package org.jclouds.ec2.compute.functions;
|
|||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
@ -48,25 +46,16 @@ public class CreateUniqueKeyPair extends CacheLoader<RegionAndName, KeyPair> {
|
|||
protected Logger logger = Logger.NULL;
|
||||
protected final EC2Client ec2Client;
|
||||
protected final Supplier<String> randomSuffix;
|
||||
protected final Map<RegionAndName, KeyPair> knownKeys;
|
||||
|
||||
@Inject
|
||||
public CreateUniqueKeyPair(Map<RegionAndName, KeyPair> knownKeys, EC2Client ec2Client, Supplier<String> randomSuffix) {
|
||||
this.knownKeys = knownKeys;
|
||||
public CreateUniqueKeyPair(EC2Client ec2Client, Supplier<String> randomSuffix) {
|
||||
this.ec2Client = ec2Client;
|
||||
this.randomSuffix = randomSuffix;
|
||||
}
|
||||
|
||||
@Override
|
||||
public KeyPair load(RegionAndName from) {
|
||||
if (knownKeys.containsKey(from)){
|
||||
return knownKeys.get(from);
|
||||
} else {
|
||||
KeyPair keyPair = createNewKeyPairInRegion(from.getRegion(), from.getName());
|
||||
knownKeys.put(new RegionAndName(from.getRegion(), keyPair.getKeyName()), keyPair);
|
||||
knownKeys.put(from, keyPair);
|
||||
return keyPair;
|
||||
}
|
||||
return createNewKeyPairInRegion(from.getRegion(), from.getName());
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.jclouds.ec2.compute.functions;
|
|||
|
||||
import static org.jclouds.ec2.options.DescribeImagesOptions.Builder.imageIds;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
@ -44,21 +43,17 @@ public class RegionAndIdToImage extends CacheLoader<RegionAndName, Image> {
|
|||
@Resource
|
||||
protected Logger logger = Logger.NULL;
|
||||
|
||||
private final Map<RegionAndName, Image> knownImages;
|
||||
private final EC2ImageParser parser;
|
||||
private final EC2Client sync;
|
||||
|
||||
@Inject
|
||||
public RegionAndIdToImage(Map<RegionAndName, Image> knownImages, EC2ImageParser parser, EC2Client sync) {
|
||||
this.knownImages = knownImages;
|
||||
public RegionAndIdToImage(EC2ImageParser parser, EC2Client sync) {
|
||||
this.parser = parser;
|
||||
this.sync = sync;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Image load(RegionAndName key) throws ExecutionException{
|
||||
if (knownImages.containsKey(key))
|
||||
return knownImages.get(key);
|
||||
try {
|
||||
org.jclouds.ec2.domain.Image image = Iterables.getOnlyElement(sync.getAMIServices()
|
||||
.describeImagesInRegion(key.getRegion(), imageIds(key.getName())));
|
||||
|
|
|
@ -21,7 +21,6 @@ package org.jclouds.ec2.compute.strategy;
|
|||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
@ -51,8 +50,6 @@ import com.google.common.util.concurrent.UncheckedExecutionException;
|
|||
*/
|
||||
@Singleton
|
||||
public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions {
|
||||
@VisibleForTesting
|
||||
public final Map<RegionAndName, KeyPair> knownKeys;
|
||||
@VisibleForTesting
|
||||
public final Cache<RegionAndName, KeyPair> credentialsMap;
|
||||
@VisibleForTesting
|
||||
|
@ -60,10 +57,9 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions {
|
|||
protected final Provider<RunInstancesOptions> optionsProvider;
|
||||
|
||||
@Inject
|
||||
public CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions(Map<RegionAndName, KeyPair> knownKeys, Cache<RegionAndName, KeyPair> credentialsMap,
|
||||
public CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions(Cache<RegionAndName, KeyPair> credentialsMap,
|
||||
@Named("SECURITY") Cache<RegionAndName, String> securityGroupMap,
|
||||
Provider<RunInstancesOptions> optionsProvider) {
|
||||
this.knownKeys = checkNotNull(knownKeys, "knownKeys");
|
||||
this.credentialsMap = checkNotNull(credentialsMap, "credentialsMap");
|
||||
this.securityGroupMap = checkNotNull(securityGroupMap, "securityGroupMap");
|
||||
this.optionsProvider = checkNotNull(optionsProvider, "optionsProvider");
|
||||
|
@ -122,8 +118,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions {
|
|||
.keyMaterial(options.getOverridingCredentials().credential).build();
|
||||
|
||||
RegionAndName key = new RegionAndName(region, keyPairName);
|
||||
knownKeys.put(key, keyPair);
|
||||
credentialsMap.invalidate(key);
|
||||
credentialsMap.asMap().put(key, keyPair);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,9 +24,8 @@ import static com.google.common.collect.Maps.uniqueIndex;
|
|||
import static org.jclouds.ec2.options.DescribeImagesOptions.Builder.ownedBy;
|
||||
import static org.jclouds.ec2.reference.EC2Constants.PROPERTY_EC2_AMI_OWNERS;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.inject.Inject;
|
||||
|
@ -49,8 +48,8 @@ import com.google.common.cache.Cache;
|
|||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableMap.Builder;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.ImmutableMap.Builder;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -66,23 +65,22 @@ public class RegionAndNameToImageSupplier implements Supplier<Cache<RegionAndNam
|
|||
private final DescribeImagesParallel describer;
|
||||
private final String[] amiOwners;
|
||||
private final EC2ImageParser parser;
|
||||
private final Map<RegionAndName, Image> knownImages;
|
||||
private final CacheLoader<RegionAndName, Image> regionAndIdToImage;
|
||||
|
||||
@Inject
|
||||
protected RegionAndNameToImageSupplier(@Region Set<String> regions, DescribeImagesParallel describer,
|
||||
@Named(PROPERTY_EC2_AMI_OWNERS) String[] amiOwners, EC2ImageParser parser,
|
||||
Map<RegionAndName, Image> knownImages, CacheLoader<RegionAndName, Image> regionAndIdToImage) {
|
||||
@Named(PROPERTY_EC2_AMI_OWNERS) String[] amiOwners, EC2ImageParser parser, CacheLoader<RegionAndName, Image> regionAndIdToImage) {
|
||||
this.regions = regions;
|
||||
this.describer = describer;
|
||||
this.amiOwners = amiOwners;
|
||||
this.parser = parser;
|
||||
this.knownImages = knownImages;
|
||||
this.regionAndIdToImage = regionAndIdToImage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Cache<RegionAndName, ? extends Image> get() {
|
||||
Cache<RegionAndName, Image> cache = CacheBuilder.newBuilder().build(regionAndIdToImage);
|
||||
|
||||
if (amiOwners.length == 0) {
|
||||
logger.debug(">> no owners specified, skipping image parsing");
|
||||
} else {
|
||||
|
@ -93,8 +91,8 @@ public class RegionAndNameToImageSupplier implements Supplier<Cache<RegionAndNam
|
|||
|
||||
Iterable<? extends Image> parsedImages = ImmutableSet.copyOf(filter(transform(describer.apply(queries), parser), Predicates
|
||||
.notNull()));
|
||||
knownImages.clear();
|
||||
knownImages.putAll(uniqueIndex(parsedImages, new Function<Image, RegionAndName>() {
|
||||
|
||||
cache.asMap().putAll(uniqueIndex(parsedImages, new Function<Image, RegionAndName>() {
|
||||
|
||||
@Override
|
||||
public RegionAndName apply(Image from) {
|
||||
|
@ -102,12 +100,7 @@ public class RegionAndNameToImageSupplier implements Supplier<Cache<RegionAndNam
|
|||
}
|
||||
|
||||
}));
|
||||
logger.debug("<< images(%d)", knownImages.size());
|
||||
}
|
||||
Cache<RegionAndName, Image> cache = CacheBuilder.newBuilder().build(regionAndIdToImage);
|
||||
// seed the cache
|
||||
for (RegionAndName image : knownImages.keySet()) {
|
||||
cache.getUnchecked(image);
|
||||
logger.debug("<< images(%d)", cache.asMap().size());
|
||||
}
|
||||
return cache;
|
||||
}
|
||||
|
|
|
@ -25,10 +25,8 @@ import static org.easymock.classextension.EasyMock.verify;
|
|||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Map;
|
||||
|
||||
import org.jclouds.ec2.EC2Client;
|
||||
import org.jclouds.ec2.compute.domain.RegionAndName;
|
||||
import org.jclouds.ec2.domain.KeyPair;
|
||||
import org.jclouds.ec2.services.KeyPairClient;
|
||||
import org.testng.annotations.Test;
|
||||
|
@ -40,13 +38,12 @@ import com.google.common.base.Supplier;
|
|||
*/
|
||||
@Test(groups = "unit")
|
||||
public class CreateUniqueKeyPairTest {
|
||||
@SuppressWarnings({ "unchecked" })
|
||||
@SuppressWarnings( { "unchecked" })
|
||||
@Test
|
||||
public void testApply() throws UnknownHostException {
|
||||
EC2Client client = createMock(EC2Client.class);
|
||||
KeyPairClient keyClient = createMock(KeyPairClient.class);
|
||||
Supplier<String> uniqueIdSupplier = createMock(Supplier.class);
|
||||
Map<RegionAndName, KeyPair> knownKeys = createMock(Map.class);
|
||||
|
||||
KeyPair pair = createMock(KeyPair.class);
|
||||
|
||||
|
@ -56,27 +53,24 @@ public class CreateUniqueKeyPairTest {
|
|||
expect(keyClient.createKeyPairInRegion("region", "jclouds#group#region#1")).andReturn(pair);
|
||||
|
||||
replay(client);
|
||||
replay(knownKeys);
|
||||
replay(keyClient);
|
||||
replay(uniqueIdSupplier);
|
||||
|
||||
CreateUniqueKeyPair parser = new CreateUniqueKeyPair(knownKeys, client, uniqueIdSupplier);
|
||||
CreateUniqueKeyPair parser = new CreateUniqueKeyPair(client, uniqueIdSupplier);
|
||||
|
||||
assertEquals(parser.createNewKeyPairInRegion("region", "group"), pair);
|
||||
|
||||
verify(client);
|
||||
verify(knownKeys);
|
||||
verify(keyClient);
|
||||
verify(uniqueIdSupplier);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked" })
|
||||
@SuppressWarnings( { "unchecked" })
|
||||
@Test
|
||||
public void testApplyWithIllegalStateException() throws UnknownHostException {
|
||||
EC2Client client = createMock(EC2Client.class);
|
||||
KeyPairClient keyClient = createMock(KeyPairClient.class);
|
||||
Supplier<String> uniqueIdSupplier = createMock(Supplier.class);
|
||||
Map<RegionAndName, KeyPair> knownKeys = createMock(Map.class);
|
||||
|
||||
KeyPair pair = createMock(KeyPair.class);
|
||||
|
||||
|
@ -88,87 +82,17 @@ public class CreateUniqueKeyPairTest {
|
|||
expect(keyClient.createKeyPairInRegion("region", "jclouds#group#region#2")).andReturn(pair);
|
||||
|
||||
replay(client);
|
||||
replay(knownKeys);
|
||||
replay(keyClient);
|
||||
replay(uniqueIdSupplier);
|
||||
|
||||
CreateUniqueKeyPair parser = new CreateUniqueKeyPair(knownKeys, client, uniqueIdSupplier);
|
||||
CreateUniqueKeyPair parser = new CreateUniqueKeyPair(client, uniqueIdSupplier);
|
||||
|
||||
assertEquals(parser.createNewKeyPairInRegion("region", "group"), pair);
|
||||
|
||||
verify(client);
|
||||
verify(knownKeys);
|
||||
verify(keyClient);
|
||||
verify(uniqueIdSupplier);
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked" })
|
||||
@Test
|
||||
public void testApplyWhenKnownKeyExists() throws UnknownHostException {
|
||||
EC2Client client = createMock(EC2Client.class);
|
||||
KeyPairClient keyClient = createMock(KeyPairClient.class);
|
||||
Supplier<String> uniqueIdSupplier = createMock(Supplier.class);
|
||||
Map<RegionAndName, KeyPair> knownKeys = createMock(Map.class);
|
||||
|
||||
KeyPair pair = createMock(KeyPair.class);
|
||||
|
||||
expect(knownKeys.containsKey(new RegionAndName("region", "group"))).andReturn(true);
|
||||
expect(knownKeys.get(new RegionAndName("region", "group"))).andReturn(pair);
|
||||
|
||||
replay(client);
|
||||
replay(knownKeys);
|
||||
replay(keyClient);
|
||||
replay(uniqueIdSupplier);
|
||||
|
||||
CreateUniqueKeyPair parser = new CreateUniqueKeyPair(knownKeys, client, uniqueIdSupplier);
|
||||
|
||||
assertEquals(parser.load(new RegionAndName("region", "group")), pair);
|
||||
|
||||
verify(client);
|
||||
verify(knownKeys);
|
||||
verify(keyClient);
|
||||
verify(uniqueIdSupplier);
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked" })
|
||||
@Test
|
||||
public void testApplyWhenKnownKeyDoesntExist() throws UnknownHostException {
|
||||
EC2Client client = createMock(EC2Client.class);
|
||||
KeyPairClient keyClient = createMock(KeyPairClient.class);
|
||||
Supplier<String> uniqueIdSupplier = createMock(Supplier.class);
|
||||
Map<RegionAndName, KeyPair> knownKeys = createMock(Map.class);
|
||||
|
||||
KeyPair pair = createMock(KeyPair.class);
|
||||
|
||||
expect(client.getKeyPairServices()).andReturn(keyClient).atLeastOnce();
|
||||
|
||||
expect(knownKeys.containsKey(new RegionAndName("region", "group"))).andReturn(false);
|
||||
expect(uniqueIdSupplier.get()).andReturn("1");
|
||||
expect(keyClient.createKeyPairInRegion("region", "jclouds#group#region#1")).andThrow(new IllegalStateException());
|
||||
expect(uniqueIdSupplier.get()).andReturn("2");
|
||||
expect(keyClient.createKeyPairInRegion("region", "jclouds#group#region#2")).andReturn(pair);
|
||||
expect(pair.getKeyName()).andReturn("jclouds#group#region#2").times(2);
|
||||
// seeding the cache explicitly. both by keyName and also by group
|
||||
expect(knownKeys.put(new RegionAndName("region", "jclouds#group#region#2"), pair)).andReturn(null);
|
||||
expect(knownKeys.put(new RegionAndName("region", "group"), pair)).andReturn(null);
|
||||
|
||||
replay(pair);
|
||||
replay(client);
|
||||
replay(knownKeys);
|
||||
replay(keyClient);
|
||||
replay(uniqueIdSupplier);
|
||||
|
||||
CreateUniqueKeyPair parser = new CreateUniqueKeyPair(knownKeys, client, uniqueIdSupplier);
|
||||
|
||||
assertEquals(parser.load(new RegionAndName("region", "group")), pair);
|
||||
|
||||
verify(pair);
|
||||
verify(client);
|
||||
verify(knownKeys);
|
||||
verify(keyClient);
|
||||
verify(uniqueIdSupplier);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,7 +26,6 @@ import static org.easymock.classextension.EasyMock.verify;
|
|||
import static org.jclouds.ec2.options.DescribeImagesOptions.Builder.imageIds;
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
@ -53,66 +52,31 @@ public class RegionAndIdToImageTest {
|
|||
EC2ImageParser parser = createMock(EC2ImageParser.class);
|
||||
EC2Client caller = createMock(EC2Client.class);
|
||||
AMIClient client = createMock(AMIClient.class);
|
||||
Map<RegionAndName, Image> knownImages = createMock(Map.class);
|
||||
|
||||
|
||||
org.jclouds.ec2.domain.Image ec2Image = createMock(org.jclouds.ec2.domain.Image.class);
|
||||
Image image = createNiceMock(Image.class);
|
||||
Set<? extends org.jclouds.ec2.domain.Image> images = ImmutableSet.<org.jclouds.ec2.domain.Image> of(ec2Image);
|
||||
|
||||
expect(knownImages.containsKey(new RegionAndName("region", "ami"))).andReturn(false);
|
||||
expect(caller.getAMIServices()).andReturn(client).atLeastOnce();
|
||||
expect(client.describeImagesInRegion("region", imageIds("ami"))).andReturn(Set.class.cast(images));
|
||||
expect(parser.apply(ec2Image)).andReturn(image);
|
||||
|
||||
replay(knownImages);
|
||||
replay(caller);
|
||||
replay(image);
|
||||
replay(parser);
|
||||
replay(client);
|
||||
|
||||
RegionAndIdToImage function = new RegionAndIdToImage(knownImages, parser, caller);
|
||||
RegionAndIdToImage function = new RegionAndIdToImage(parser, caller);
|
||||
|
||||
assertEquals(function.load(new RegionAndName("region", "ami")), image);
|
||||
|
||||
verify(caller);
|
||||
verify(image);
|
||||
verify(image);
|
||||
verify(knownImages);
|
||||
verify(client);
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Test
|
||||
public void testApplyWhenFoundDoesntCallClient() throws ExecutionException {
|
||||
|
||||
EC2ImageParser parser = createMock(EC2ImageParser.class);
|
||||
EC2Client caller = createMock(EC2Client.class);
|
||||
AMIClient client = createMock(AMIClient.class);
|
||||
Map<RegionAndName, Image> knownImages = createMock(Map.class);
|
||||
|
||||
Image image = createNiceMock(Image.class);
|
||||
|
||||
expect(knownImages.containsKey(new RegionAndName("region", "ami"))).andReturn(true);
|
||||
expect(knownImages.get(new RegionAndName("region", "ami"))).andReturn(image);
|
||||
|
||||
replay(knownImages);
|
||||
replay(caller);
|
||||
replay(image);
|
||||
replay(parser);
|
||||
replay(client);
|
||||
|
||||
RegionAndIdToImage function = new RegionAndIdToImage(knownImages, parser, caller);
|
||||
|
||||
assertEquals(function.load(new RegionAndName("region", "ami")), image);
|
||||
|
||||
verify(caller);
|
||||
verify(image);
|
||||
verify(image);
|
||||
verify(knownImages);
|
||||
verify(client);
|
||||
|
||||
}
|
||||
@SuppressWarnings("unchecked")
|
||||
@Test(expectedExceptions = ExecutionException.class)
|
||||
public void testApplyNotFoundMakesExecutionException() throws ExecutionException {
|
||||
|
@ -120,13 +84,11 @@ public class RegionAndIdToImageTest {
|
|||
EC2ImageParser parser = createMock(EC2ImageParser.class);
|
||||
EC2Client caller = createMock(EC2Client.class);
|
||||
AMIClient client = createMock(AMIClient.class);
|
||||
Map<RegionAndName, Image> knownImages = createMock(Map.class);
|
||||
|
||||
|
||||
org.jclouds.ec2.domain.Image ec2Image = createMock(org.jclouds.ec2.domain.Image.class);
|
||||
Image image = createNiceMock(Image.class);
|
||||
Set<? extends org.jclouds.ec2.domain.Image> images = ImmutableSet.<org.jclouds.ec2.domain.Image> of(ec2Image);
|
||||
|
||||
expect(knownImages.containsKey(new RegionAndName("region", "ami"))).andReturn(false);
|
||||
expect(caller.getAMIServices()).andReturn(client).atLeastOnce();
|
||||
expect(client.describeImagesInRegion("region", imageIds("ami"))).andReturn(Set.class.cast(images));
|
||||
expect(parser.apply(ec2Image)).andThrow(new ResourceNotFoundException());
|
||||
|
@ -134,17 +96,15 @@ public class RegionAndIdToImageTest {
|
|||
replay(caller);
|
||||
replay(image);
|
||||
replay(parser);
|
||||
replay(knownImages);
|
||||
replay(client);
|
||||
|
||||
RegionAndIdToImage function = new RegionAndIdToImage(knownImages, parser, caller);
|
||||
RegionAndIdToImage function = new RegionAndIdToImage(parser, caller);
|
||||
|
||||
assertEquals(function.load(new RegionAndName("region", "ami")), null);
|
||||
|
||||
verify(caller);
|
||||
verify(image);
|
||||
verify(parser);
|
||||
verify(knownImages);
|
||||
verify(client);
|
||||
|
||||
}
|
||||
|
@ -156,30 +116,26 @@ public class RegionAndIdToImageTest {
|
|||
EC2ImageParser parser = createMock(EC2ImageParser.class);
|
||||
EC2Client caller = createMock(EC2Client.class);
|
||||
AMIClient client = createMock(AMIClient.class);
|
||||
Map<RegionAndName, Image> knownImages = createMock(Map.class);
|
||||
|
||||
org.jclouds.ec2.domain.Image ec2Image = createMock(org.jclouds.ec2.domain.Image.class);
|
||||
Image image = createNiceMock(Image.class);
|
||||
Set<? extends org.jclouds.ec2.domain.Image> images = ImmutableSet.<org.jclouds.ec2.domain.Image> of(ec2Image);
|
||||
|
||||
expect(knownImages.containsKey(new RegionAndName("region", "ami"))).andReturn(false);
|
||||
expect(caller.getAMIServices()).andReturn(client).atLeastOnce();
|
||||
expect(client.describeImagesInRegion("region", imageIds("ami"))).andReturn(Set.class.cast(images));
|
||||
expect(parser.apply(ec2Image)).andThrow(new NoSuchElementException());
|
||||
|
||||
replay(caller);
|
||||
replay(image);
|
||||
replay(knownImages);
|
||||
replay(parser);
|
||||
replay(client);
|
||||
|
||||
RegionAndIdToImage function = new RegionAndIdToImage(knownImages, parser, caller);
|
||||
RegionAndIdToImage function = new RegionAndIdToImage(parser, caller);
|
||||
|
||||
assertEquals(function.load(new RegionAndName("region", "ami")), null);
|
||||
|
||||
verify(caller);
|
||||
verify(image);
|
||||
verify(knownImages);
|
||||
verify(parser);
|
||||
verify(client);
|
||||
|
||||
|
|
|
@ -25,8 +25,8 @@ import static org.easymock.classextension.EasyMock.verify;
|
|||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
import javax.inject.Provider;
|
||||
|
@ -77,15 +77,15 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
|
||||
// create mocks
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = createMock(
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class,
|
||||
new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"getSecurityGroupsForTagAndOptions", String.class, String.class, TemplateOptions.class) });
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class, new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getSecurityGroupsForTagAndOptions", String.class, String.class,
|
||||
TemplateOptions.class) });
|
||||
|
||||
EC2TemplateOptions options = createMock(EC2TemplateOptions.class);
|
||||
Template template = createMock(Template.class);
|
||||
|
@ -96,7 +96,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
expect(template.getOptions()).andReturn(options).atLeastOnce();
|
||||
expect(options.getBlockDeviceMappings()).andReturn(ImmutableSet.<BlockDeviceMapping> of()).atLeastOnce();
|
||||
expect(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, tag, options)).andReturn(
|
||||
systemGeneratedKeyPairName);
|
||||
systemGeneratedKeyPairName);
|
||||
expect(strategy.getSecurityGroupsForTagAndOptions(region, tag, options)).andReturn(generatedGroups);
|
||||
expect(options.getUserData()).andReturn(null);
|
||||
|
||||
|
@ -108,10 +108,9 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
// run
|
||||
RunInstancesOptions customize = strategy.execute(region, tag, template);
|
||||
assertEquals(customize.buildQueryParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(
|
||||
customize.buildFormParameters().entries(),
|
||||
ImmutableMultimap.<String, String> of("InstanceType", size.getProviderId(), "SecurityGroup.1",
|
||||
generatedGroup, "KeyName", systemGeneratedKeyPairName).entries());
|
||||
assertEquals(customize.buildFormParameters().entries(), ImmutableMultimap.<String, String> of("InstanceType",
|
||||
size.getProviderId(), "SecurityGroup.1", generatedGroup, "KeyName", systemGeneratedKeyPairName)
|
||||
.entries());
|
||||
assertEquals(customize.buildMatrixParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildRequestHeaders(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildStringPayload(), null);
|
||||
|
@ -133,15 +132,15 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
|
||||
// create mocks
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = createMock(
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class,
|
||||
new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"getSecurityGroupsForTagAndOptions", String.class, String.class, TemplateOptions.class) });
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class, new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getSecurityGroupsForTagAndOptions", String.class, String.class,
|
||||
TemplateOptions.class) });
|
||||
|
||||
EC2TemplateOptions options = createMock(EC2TemplateOptions.class);
|
||||
Template template = createMock(Template.class);
|
||||
|
@ -152,7 +151,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
expect(template.getOptions()).andReturn(options).atLeastOnce();
|
||||
expect(options.getBlockDeviceMappings()).andReturn(ImmutableSet.<BlockDeviceMapping> of()).atLeastOnce();
|
||||
expect(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, tag, options)).andReturn(
|
||||
systemGeneratedKeyPairName);
|
||||
systemGeneratedKeyPairName);
|
||||
expect(strategy.getSecurityGroupsForTagAndOptions(region, tag, options)).andReturn(generatedGroups);
|
||||
expect(options.getUserData()).andReturn("hello".getBytes());
|
||||
|
||||
|
@ -164,10 +163,9 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
// run
|
||||
RunInstancesOptions customize = strategy.execute(region, tag, template);
|
||||
assertEquals(customize.buildQueryParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(
|
||||
customize.buildFormParameters().entries(),
|
||||
ImmutableMultimap.<String, String> of("InstanceType", size.getProviderId(), "SecurityGroup.1", "group",
|
||||
"KeyName", systemGeneratedKeyPairName, "UserData", Base64.encodeBytes("hello".getBytes())).entries());
|
||||
assertEquals(customize.buildFormParameters().entries(), ImmutableMultimap.<String, String> of("InstanceType",
|
||||
size.getProviderId(), "SecurityGroup.1", "group", "KeyName", systemGeneratedKeyPairName, "UserData",
|
||||
Base64.encodeBytes("hello".getBytes())).entries());
|
||||
assertEquals(customize.buildMatrixParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildRequestHeaders(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildStringPayload(), null);
|
||||
|
@ -225,7 +223,8 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
expect(options.getOverridingCredentials()).andReturn(null);
|
||||
expect(options.getRunScript()).andReturn(Statements.exec("echo foo"));
|
||||
|
||||
expect(strategy.credentialsMap.getUnchecked(new RegionAndName(region, userSuppliedKeyPair))).andThrow(new NullPointerException());
|
||||
expect(strategy.credentialsMap.getUnchecked(new RegionAndName(region, userSuppliedKeyPair))).andThrow(
|
||||
new NullPointerException());
|
||||
|
||||
// replay mocks
|
||||
replay(options);
|
||||
|
@ -273,6 +272,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
verifyStrategy(strategy);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_reusesKeyWhenToldToWithRunScriptAndCredentialsSpecified() {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
|
@ -283,22 +283,22 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy();
|
||||
EC2TemplateOptions options = createMock(EC2TemplateOptions.class);
|
||||
KeyPair keyPair = createMock(KeyPair.class);
|
||||
ConcurrentMap<RegionAndName, KeyPair> backing = createMock(ConcurrentMap.class);
|
||||
|
||||
// setup expectations
|
||||
expect(options.getKeyPair()).andReturn(userSuppliedKeyPair);
|
||||
expect(options.getOverridingCredentials()).andReturn(new Credentials(null, "MyRsa")).atLeastOnce();
|
||||
expect(strategy.credentialsMap.asMap()).andReturn(backing);
|
||||
expect(
|
||||
strategy.knownKeys.put(
|
||||
new RegionAndName(region, userSuppliedKeyPair),
|
||||
KeyPair.builder().region(region).keyName(userSuppliedKeyPair).keyFingerprint("//TODO")
|
||||
.keyMaterial("MyRsa").build())).andReturn(null);
|
||||
strategy.credentialsMap.invalidate(new RegionAndName(region, userSuppliedKeyPair));
|
||||
backing.put(new RegionAndName(region, userSuppliedKeyPair), KeyPair.builder().region(region).keyName(
|
||||
userSuppliedKeyPair).keyFingerprint("//TODO").keyMaterial("MyRsa").build())).andReturn(null);
|
||||
expect(options.getRunScript()).andReturn(Statements.exec("echo foo"));
|
||||
expect(strategy.credentialsMap.getUnchecked(new RegionAndName(region, userSuppliedKeyPair))).andReturn(keyPair);
|
||||
|
||||
// replay mocks
|
||||
replay(options);
|
||||
replay(keyPair);
|
||||
replay(backing);
|
||||
replayStrategy(strategy);
|
||||
|
||||
// run
|
||||
|
@ -307,11 +307,12 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
// verify mocks
|
||||
verify(options);
|
||||
verify(keyPair);
|
||||
verify(backing);
|
||||
verifyStrategy(strategy);
|
||||
}
|
||||
|
||||
public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_createsNewKeyPairAndReturnsItsNameByDefault()
|
||||
throws ExecutionException {
|
||||
throws ExecutionException {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
String tag = "tag";
|
||||
|
@ -338,7 +339,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
|
||||
// run
|
||||
assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, tag, options),
|
||||
systemGeneratedKeyPairName);
|
||||
systemGeneratedKeyPairName);
|
||||
|
||||
// verify mocks
|
||||
verify(options);
|
||||
|
@ -379,7 +380,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
}
|
||||
|
||||
public void testGetSecurityGroupsForTagAndOptions_createsNewGroupByDefaultWhenNoPortsAreSpecifiedWhenDoesntExist()
|
||||
throws ExecutionException {
|
||||
throws ExecutionException {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
String tag = "tag";
|
||||
|
@ -397,7 +398,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
expect(options.getGroups()).andReturn(groupIds).atLeastOnce();
|
||||
expect(options.getInboundPorts()).andReturn(ports).atLeastOnce();
|
||||
RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup,
|
||||
ports, shouldAuthorizeSelf);
|
||||
ports, shouldAuthorizeSelf);
|
||||
expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(tag);
|
||||
|
||||
// replay mocks
|
||||
|
@ -413,7 +414,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
}
|
||||
|
||||
public void testGetSecurityGroupsForTagAndOptions_createsNewGroupByDefaultWhenPortsAreSpecifiedWhenDoesntExist()
|
||||
throws ExecutionException {
|
||||
throws ExecutionException {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
String tag = "tag";
|
||||
|
@ -431,7 +432,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
expect(options.getGroups()).andReturn(groupIds).atLeastOnce();
|
||||
expect(options.getInboundPorts()).andReturn(ports).atLeastOnce();
|
||||
RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup,
|
||||
ports, shouldAuthorizeSelf);
|
||||
ports, shouldAuthorizeSelf);
|
||||
expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(generatedMarkerGroup);
|
||||
|
||||
// replay mocks
|
||||
|
@ -447,7 +448,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
}
|
||||
|
||||
public void testGetSecurityGroupsForTagAndOptions_reusesGroupByDefaultWhenNoPortsAreSpecifiedWhenDoesExist()
|
||||
throws ExecutionException {
|
||||
throws ExecutionException {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
String tag = "tag";
|
||||
|
@ -465,7 +466,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
expect(options.getGroups()).andReturn(groupIds).atLeastOnce();
|
||||
expect(options.getInboundPorts()).andReturn(ports).atLeastOnce();
|
||||
RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup,
|
||||
ports, shouldAuthorizeSelf);
|
||||
ports, shouldAuthorizeSelf);
|
||||
expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(generatedMarkerGroup);
|
||||
|
||||
// replay mocks
|
||||
|
@ -498,7 +499,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
// setup expectations
|
||||
expect(options.getGroups()).andReturn(groupIds).atLeastOnce();
|
||||
RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup,
|
||||
ports, shouldAuthorizeSelf);
|
||||
ports, shouldAuthorizeSelf);
|
||||
|
||||
expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(groupExisted ? "tag" : null);
|
||||
|
||||
|
@ -515,22 +516,19 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
}
|
||||
|
||||
private void verifyStrategy(CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy) {
|
||||
verify(strategy.knownKeys);
|
||||
verify(strategy.credentialsMap);
|
||||
verify(strategy.securityGroupMap);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions setupStrategy() {
|
||||
Map<RegionAndName, KeyPair> knownKeys = createMock(Map.class);
|
||||
Cache<RegionAndName, KeyPair> credentialsMap = createMock(Cache.class);
|
||||
Cache<RegionAndName, String> securityGroupMap = createMock(Cache.class);
|
||||
return new CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions(knownKeys, credentialsMap, securityGroupMap,
|
||||
OPTIONS_PROVIDER);
|
||||
return new CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions(credentialsMap, securityGroupMap,
|
||||
OPTIONS_PROVIDER);
|
||||
}
|
||||
|
||||
private void replayStrategy(CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy) {
|
||||
replay(strategy.knownKeys);
|
||||
replay(strategy.credentialsMap);
|
||||
replay(strategy.securityGroupMap);
|
||||
}
|
||||
|
|
|
@ -109,7 +109,7 @@
|
|||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>10.0</version>
|
||||
<version>10.0.1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
|
|
@ -64,13 +64,18 @@ public class CacheLearningTest {
|
|||
assertEquals(cache.asMap().keySet().size(), 0);
|
||||
assertEquals(cache.asMap().size(), 0);
|
||||
|
||||
try {
|
||||
cache.asMap().put("foo", "bar");
|
||||
assertEquals(cache.get("foo"), "bar");
|
||||
assert false : "I suppose this works now! Go hunt for invalidate calls!";
|
||||
} catch (UnsupportedOperationException e) {
|
||||
}
|
||||
// check insert behind
|
||||
cache.asMap().put("foo", "bar");
|
||||
assertEquals(cache.get("foo"), "bar");
|
||||
|
||||
assertEquals(cache.asMap().keySet().size(), 1);
|
||||
assertEquals(cache.asMap().size(), 1);
|
||||
|
||||
// check delete behind invalidates
|
||||
cache.asMap().remove("foo");
|
||||
assertEquals(cache.asMap().keySet().size(), 0);
|
||||
assertEquals(cache.asMap().size(), 0);
|
||||
|
||||
try {
|
||||
cache.get("exception");
|
||||
assert false : "expected checked exception in loader to rethrow as ExecutionException";
|
||||
|
|
|
@ -21,8 +21,6 @@ package org.jclouds.aws.ec2.compute.strategy;
|
|||
import static com.google.common.base.Predicates.and;
|
||||
import static com.google.common.base.Predicates.or;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
@ -66,14 +64,14 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions
|
|||
final Function<RegionNameAndPublicKeyMaterial, KeyPair> importExistingKeyPair;
|
||||
|
||||
@Inject
|
||||
public CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions(Map<RegionAndName, KeyPair> knownKeys,
|
||||
Cache<RegionAndName, KeyPair> credentialsMap,
|
||||
@Named("SECURITY") Cache<RegionAndName, String> securityGroupMap,
|
||||
Provider<RunInstancesOptions> optionsProvider,
|
||||
@Named("PLACEMENT") Cache<RegionAndName, String> placementGroupMap,
|
||||
CreatePlacementGroupIfNeeded createPlacementGroupIfNeeded,
|
||||
Function<RegionNameAndPublicKeyMaterial, KeyPair> importExistingKeyPair) {
|
||||
super(knownKeys, credentialsMap, securityGroupMap, optionsProvider);
|
||||
public CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions(
|
||||
Cache<RegionAndName, KeyPair> credentialsMap,
|
||||
@Named("SECURITY") Cache<RegionAndName, String> securityGroupMap,
|
||||
Provider<RunInstancesOptions> optionsProvider,
|
||||
@Named("PLACEMENT") Cache<RegionAndName, String> placementGroupMap,
|
||||
CreatePlacementGroupIfNeeded createPlacementGroupIfNeeded,
|
||||
Function<RegionNameAndPublicKeyMaterial, KeyPair> importExistingKeyPair) {
|
||||
super(credentialsMap, securityGroupMap, optionsProvider);
|
||||
this.placementGroupMap = placementGroupMap;
|
||||
this.createPlacementGroupIfNeeded = createPlacementGroupIfNeeded;
|
||||
this.importExistingKeyPair = importExistingKeyPair;
|
||||
|
@ -119,15 +117,15 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions
|
|||
@Override
|
||||
public String createNewKeyPairUnlessUserSpecifiedOtherwise(String region, String group, TemplateOptions options) {
|
||||
RegionAndName key = new RegionAndName(region, group);
|
||||
KeyPair pair = knownKeys.get(key);
|
||||
if (pair != null)
|
||||
return pair.getKeyName();
|
||||
KeyPair pair;
|
||||
if (credentialsMap.asMap().containsKey(key))
|
||||
return credentialsMap.getUnchecked(key).getKeyName();
|
||||
if (and(hasPublicKeyMaterial, or(doesntNeedSshAfterImportingPublicKey, hasLoginCredential)).apply(options)) {
|
||||
pair = importExistingKeyPair.apply(new RegionNameAndPublicKeyMaterial(region, group, options.getPublicKey()));
|
||||
options.dontAuthorizePublicKey();
|
||||
if (hasLoginCredential.apply(options))
|
||||
pair = pair.toBuilder().keyMaterial(options.getOverridingCredentials().credential).build();
|
||||
knownKeys.put(key, pair);
|
||||
credentialsMap.asMap().put(key, pair);
|
||||
} else {
|
||||
if (hasPublicKeyMaterial.apply(options)) {
|
||||
logger.warn("to avoid creating temporary keys in aws-ec2, use templateOption overrideLoginCredentialWith(id_rsa)");
|
||||
|
|
|
@ -25,7 +25,6 @@ import static org.jclouds.aws.ec2.reference.AWSEC2Constants.PROPERTY_EC2_AMI_QUE
|
|||
import static org.jclouds.aws.ec2.reference.AWSEC2Constants.PROPERTY_EC2_CC_AMI_QUERY;
|
||||
import static org.jclouds.aws.ec2.reference.AWSEC2Constants.PROPERTY_EC2_CC_REGIONS;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Future;
|
||||
|
@ -66,7 +65,6 @@ public class AWSRegionAndNameToImageSupplier implements Supplier<Cache<RegionAnd
|
|||
@Named(ComputeServiceConstants.COMPUTE_LOGGER)
|
||||
protected Logger logger = Logger.NULL;
|
||||
|
||||
private final Map<RegionAndName, Image> knownImages;
|
||||
private final CacheLoader<RegionAndName, Image> regionAndIdToImage;
|
||||
private final Set<String> clusterComputeIds;
|
||||
private final CallForImages.Factory factory;
|
||||
|
@ -77,11 +75,10 @@ public class AWSRegionAndNameToImageSupplier implements Supplier<Cache<RegionAnd
|
|||
private final Iterable<String> clusterRegions;
|
||||
private final String ccAmiQuery;
|
||||
|
||||
|
||||
@Inject
|
||||
protected AWSRegionAndNameToImageSupplier(@Region Set<String> regions,
|
||||
@Named(PROPERTY_EC2_AMI_QUERY) String amiQuery, @Named(PROPERTY_EC2_CC_REGIONS) String clusterRegions,
|
||||
@Named(PROPERTY_EC2_CC_AMI_QUERY) String ccAmiQuery, Map<RegionAndName, Image> knownImages, CacheLoader<RegionAndName, Image> regionAndIdToImage,
|
||||
@Named(PROPERTY_EC2_CC_AMI_QUERY) String ccAmiQuery, CacheLoader<RegionAndName, Image> regionAndIdToImage,
|
||||
CallForImages.Factory factory, @ClusterCompute Set<String> clusterComputeIds,
|
||||
@Named(Constants.PROPERTY_USER_THREADS) ExecutorService executor) {
|
||||
this.factory = factory;
|
||||
|
@ -89,8 +86,7 @@ public class AWSRegionAndNameToImageSupplier implements Supplier<Cache<RegionAnd
|
|||
this.amiQuery = amiQuery;
|
||||
this.clusterRegions = Splitter.on(',').split(clusterRegions);
|
||||
this.ccAmiQuery = ccAmiQuery;
|
||||
this.knownImages = knownImages;
|
||||
this.regionAndIdToImage=regionAndIdToImage;
|
||||
this.regionAndIdToImage = regionAndIdToImage;
|
||||
this.clusterComputeIds = clusterComputeIds;
|
||||
this.executor = executor;
|
||||
}
|
||||
|
@ -121,8 +117,9 @@ public class AWSRegionAndNameToImageSupplier implements Supplier<Cache<RegionAnd
|
|||
Throwables.propagate(e);
|
||||
return null;
|
||||
}
|
||||
knownImages.clear();
|
||||
knownImages.putAll(uniqueIndex(parsedImages, new Function<Image, RegionAndName>() {
|
||||
Cache<RegionAndName, Image> cache = CacheBuilder.newBuilder().build(regionAndIdToImage);
|
||||
|
||||
cache.asMap().putAll(uniqueIndex(parsedImages, new Function<Image, RegionAndName>() {
|
||||
|
||||
@Override
|
||||
public RegionAndName apply(Image from) {
|
||||
|
@ -130,12 +127,7 @@ public class AWSRegionAndNameToImageSupplier implements Supplier<Cache<RegionAnd
|
|||
}
|
||||
|
||||
}));
|
||||
logger.debug("<< images(%d)", knownImages.size());
|
||||
Cache<RegionAndName, Image> cache = CacheBuilder.newBuilder().build(regionAndIdToImage);
|
||||
// seed the cache
|
||||
for (RegionAndName image : knownImages.keySet()){
|
||||
cache.getUnchecked(image);
|
||||
}
|
||||
logger.debug("<< images(%d)", cache.asMap().size());
|
||||
return cache;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,11 +22,12 @@ import static org.easymock.EasyMock.expect;
|
|||
import static org.easymock.classextension.EasyMock.createMock;
|
||||
import static org.easymock.classextension.EasyMock.replay;
|
||||
import static org.easymock.classextension.EasyMock.verify;
|
||||
import static org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions.Builder.keyPair;
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
import javax.inject.Provider;
|
||||
|
||||
|
@ -57,6 +58,7 @@ import com.google.common.base.Function;
|
|||
import com.google.common.cache.Cache;
|
||||
import com.google.common.collect.ImmutableMultimap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
/**
|
||||
* @author Adrian Cole
|
||||
|
@ -72,7 +74,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
|
||||
};
|
||||
|
||||
@Test(enabled=false)
|
||||
@Test(enabled = false)
|
||||
public void testExecuteWithDefaultOptionsEC2() throws SecurityException, NoSuchMethodException {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
|
@ -84,18 +86,18 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
|
||||
// create mocks
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions strategy = createMock(
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class,
|
||||
new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewPlacementGroupUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"getSecurityGroupsForTagAndOptions", String.class, String.class, TemplateOptions.class) });
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class, new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewPlacementGroupUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getSecurityGroupsForTagAndOptions", String.class, String.class,
|
||||
TemplateOptions.class) });
|
||||
|
||||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
Template template = createMock(Template.class);
|
||||
|
@ -106,9 +108,9 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
expect(template.getOptions()).andReturn(options).atLeastOnce();
|
||||
expect(options.getBlockDeviceMappings()).andReturn(ImmutableSet.<BlockDeviceMapping> of()).atLeastOnce();
|
||||
expect(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options)).andReturn(
|
||||
systemGeneratedKeyPairName);
|
||||
systemGeneratedKeyPairName);
|
||||
expect(strategy.getSecurityGroupsForTagAndOptions(region, group, options)).andReturn(generatedGroups);
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String>of());
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String> of());
|
||||
expect(options.getSubnetId()).andReturn(null);
|
||||
expect(options.getUserData()).andReturn(null);
|
||||
expect(options.isMonitoringEnabled()).andReturn(false);
|
||||
|
@ -121,10 +123,9 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
// run
|
||||
RunInstancesOptions customize = strategy.execute(region, group, template);
|
||||
assertEquals(customize.buildQueryParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(
|
||||
customize.buildFormParameters().entries(),
|
||||
ImmutableMultimap.<String, String> of("InstanceType", size.getProviderId(), "SecurityGroup.1",
|
||||
generatedGroup, "KeyName", systemGeneratedKeyPairName).entries());
|
||||
assertEquals(customize.buildFormParameters().entries(), ImmutableMultimap.<String, String> of("InstanceType",
|
||||
size.getProviderId(), "SecurityGroup.1", generatedGroup, "KeyName", systemGeneratedKeyPairName)
|
||||
.entries());
|
||||
assertEquals(customize.buildMatrixParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildRequestHeaders(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildStringPayload(), null);
|
||||
|
@ -135,7 +136,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
verify(strategy);
|
||||
}
|
||||
|
||||
@Test(enabled=false)
|
||||
@Test(enabled = false)
|
||||
public void testExecuteForCCAutomatic() throws SecurityException, NoSuchMethodException {
|
||||
// setup constants
|
||||
String region = Region.US_EAST_1;
|
||||
|
@ -147,18 +148,18 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
|
||||
// create mocks
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions strategy = createMock(
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class,
|
||||
new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewPlacementGroupUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"getSecurityGroupsForTagAndOptions", String.class, String.class, TemplateOptions.class) });
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class, new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewPlacementGroupUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getSecurityGroupsForTagAndOptions", String.class, String.class,
|
||||
TemplateOptions.class) });
|
||||
|
||||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
Template template = createMock(Template.class);
|
||||
|
@ -169,11 +170,11 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
expect(template.getOptions()).andReturn(options).atLeastOnce();
|
||||
expect(options.getBlockDeviceMappings()).andReturn(ImmutableSet.<BlockDeviceMapping> of()).atLeastOnce();
|
||||
expect(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options)).andReturn(
|
||||
systemGeneratedKeyPairName);
|
||||
systemGeneratedKeyPairName);
|
||||
expect(strategy.createNewPlacementGroupUnlessUserSpecifiedOtherwise(region, group, options)).andReturn(
|
||||
generatedGroup);
|
||||
generatedGroup);
|
||||
expect(strategy.getSecurityGroupsForTagAndOptions(region, group, options)).andReturn(generatedGroups);
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String>of());
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String> of());
|
||||
expect(options.getSubnetId()).andReturn(null);
|
||||
expect(options.getUserData()).andReturn(null);
|
||||
expect(options.isMonitoringEnabled()).andReturn(false);
|
||||
|
@ -186,11 +187,9 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
// run
|
||||
RunInstancesOptions customize = strategy.execute(region, group, template);
|
||||
assertEquals(customize.buildQueryParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(
|
||||
customize.buildFormParameters().entries(),
|
||||
ImmutableMultimap.<String, String> of("InstanceType", size.getProviderId(), "SecurityGroup.1",
|
||||
generatedGroup, "KeyName", systemGeneratedKeyPairName, "Placement.GroupName", generatedGroup)
|
||||
.entries());
|
||||
assertEquals(customize.buildFormParameters().entries(), ImmutableMultimap.<String, String> of("InstanceType",
|
||||
size.getProviderId(), "SecurityGroup.1", generatedGroup, "KeyName", systemGeneratedKeyPairName,
|
||||
"Placement.GroupName", generatedGroup).entries());
|
||||
assertEquals(customize.buildMatrixParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildRequestHeaders(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildStringPayload(), null);
|
||||
|
@ -200,8 +199,8 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
verify(template);
|
||||
verify(strategy);
|
||||
}
|
||||
|
||||
@Test(enabled=false)
|
||||
|
||||
@Test(enabled = false)
|
||||
public void testExecuteForCCUserSpecified() throws SecurityException, NoSuchMethodException {
|
||||
// setup constants
|
||||
String region = Region.US_EAST_1;
|
||||
|
@ -213,18 +212,18 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
|
||||
// create mocks
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions strategy = createMock(
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class,
|
||||
new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewPlacementGroupUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"getSecurityGroupsForTagAndOptions", String.class, String.class, TemplateOptions.class) });
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class, new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewPlacementGroupUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getSecurityGroupsForTagAndOptions", String.class, String.class,
|
||||
TemplateOptions.class) });
|
||||
|
||||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
Template template = createMock(Template.class);
|
||||
|
@ -235,11 +234,11 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
expect(template.getOptions()).andReturn(options).atLeastOnce();
|
||||
expect(options.getBlockDeviceMappings()).andReturn(ImmutableSet.<BlockDeviceMapping> of()).atLeastOnce();
|
||||
expect(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options)).andReturn(
|
||||
systemGeneratedKeyPairName);
|
||||
systemGeneratedKeyPairName);
|
||||
expect(strategy.createNewPlacementGroupUnlessUserSpecifiedOtherwise(region, group, options)).andReturn(
|
||||
generatedGroup);
|
||||
generatedGroup);
|
||||
expect(strategy.getSecurityGroupsForTagAndOptions(region, group, options)).andReturn(generatedGroups);
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String>of());
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String> of());
|
||||
expect(options.getSubnetId()).andReturn(null);
|
||||
expect(options.getUserData()).andReturn(null);
|
||||
expect(options.isMonitoringEnabled()).andReturn(false);
|
||||
|
@ -252,11 +251,9 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
// run
|
||||
RunInstancesOptions customize = strategy.execute(region, group, template);
|
||||
assertEquals(customize.buildQueryParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(
|
||||
customize.buildFormParameters().entries(),
|
||||
ImmutableMultimap.<String, String> of("InstanceType", size.getProviderId(), "SecurityGroup.1",
|
||||
generatedGroup, "KeyName", systemGeneratedKeyPairName, "Placement.GroupName", generatedGroup)
|
||||
.entries());
|
||||
assertEquals(customize.buildFormParameters().entries(), ImmutableMultimap.<String, String> of("InstanceType",
|
||||
size.getProviderId(), "SecurityGroup.1", generatedGroup, "KeyName", systemGeneratedKeyPairName,
|
||||
"Placement.GroupName", generatedGroup).entries());
|
||||
assertEquals(customize.buildMatrixParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildRequestHeaders(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildStringPayload(), null);
|
||||
|
@ -267,7 +264,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
verify(strategy);
|
||||
}
|
||||
|
||||
@Test(enabled=false)
|
||||
@Test(enabled = false)
|
||||
public void testExecuteWithSubnet() throws SecurityException, NoSuchMethodException {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
|
@ -277,18 +274,18 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
|
||||
// create mocks
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions strategy = createMock(
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class,
|
||||
new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewPlacementGroupUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"getSecurityGroupsForTagAndOptions", String.class, String.class, TemplateOptions.class) });
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class, new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewPlacementGroupUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getSecurityGroupsForTagAndOptions", String.class, String.class,
|
||||
TemplateOptions.class) });
|
||||
|
||||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
Template template = createMock(Template.class);
|
||||
|
@ -299,8 +296,8 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
expect(template.getOptions()).andReturn(options).atLeastOnce();
|
||||
expect(options.getBlockDeviceMappings()).andReturn(ImmutableSet.<BlockDeviceMapping> of()).atLeastOnce();
|
||||
expect(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options)).andReturn(
|
||||
systemGeneratedKeyPairName);
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String>of());
|
||||
systemGeneratedKeyPairName);
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String> of());
|
||||
expect(options.getSubnetId()).andReturn("1");
|
||||
expect(options.getUserData()).andReturn(null);
|
||||
expect(options.isMonitoringEnabled()).andReturn(false);
|
||||
|
@ -313,10 +310,8 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
// run
|
||||
RunInstancesOptions customize = strategy.execute(region, group, template);
|
||||
assertEquals(customize.buildQueryParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(
|
||||
customize.buildFormParameters().entries(),
|
||||
ImmutableMultimap.<String, String> of("InstanceType", size.getProviderId(), "SubnetId", "1", "KeyName",
|
||||
systemGeneratedKeyPairName).entries());
|
||||
assertEquals(customize.buildFormParameters().entries(), ImmutableMultimap.<String, String> of("InstanceType",
|
||||
size.getProviderId(), "SubnetId", "1", "KeyName", systemGeneratedKeyPairName).entries());
|
||||
assertEquals(customize.buildMatrixParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildRequestHeaders(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildStringPayload(), null);
|
||||
|
@ -327,7 +322,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
verify(strategy);
|
||||
}
|
||||
|
||||
@Test(enabled=false)
|
||||
@Test(enabled = false)
|
||||
public void testExecuteWithUserData() throws SecurityException, NoSuchMethodException {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
|
@ -339,18 +334,18 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
|
||||
// create mocks
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions strategy = createMock(
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class,
|
||||
new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewPlacementGroupUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"getSecurityGroupsForTagAndOptions", String.class, String.class, TemplateOptions.class) });
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class, new Method[] {
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getOptionsProvider"),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod(
|
||||
"createNewPlacementGroupUnlessUserSpecifiedOtherwise", String.class, String.class,
|
||||
TemplateOptions.class),
|
||||
CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class
|
||||
.getDeclaredMethod("getSecurityGroupsForTagAndOptions", String.class, String.class,
|
||||
TemplateOptions.class) });
|
||||
|
||||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
Template template = createMock(Template.class);
|
||||
|
@ -361,9 +356,9 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
expect(template.getOptions()).andReturn(options).atLeastOnce();
|
||||
expect(options.getBlockDeviceMappings()).andReturn(ImmutableSet.<BlockDeviceMapping> of()).atLeastOnce();
|
||||
expect(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options)).andReturn(
|
||||
systemGeneratedKeyPairName);
|
||||
systemGeneratedKeyPairName);
|
||||
expect(strategy.getSecurityGroupsForTagAndOptions(region, group, options)).andReturn(generatedGroups);
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String>of());
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String> of());
|
||||
expect(options.getSubnetId()).andReturn(null);
|
||||
expect(options.getUserData()).andReturn("hello".getBytes());
|
||||
expect(options.isMonitoringEnabled()).andReturn(false);
|
||||
|
@ -376,10 +371,9 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
// run
|
||||
RunInstancesOptions customize = strategy.execute(region, group, template);
|
||||
assertEquals(customize.buildQueryParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(
|
||||
customize.buildFormParameters().entries(),
|
||||
ImmutableMultimap.<String, String> of("InstanceType", size.getProviderId(), "SecurityGroup.1", "group",
|
||||
"KeyName", systemGeneratedKeyPairName, "UserData", Base64.encodeBytes("hello".getBytes())).entries());
|
||||
assertEquals(customize.buildFormParameters().entries(), ImmutableMultimap.<String, String> of("InstanceType",
|
||||
size.getProviderId(), "SecurityGroup.1", "group", "KeyName", systemGeneratedKeyPairName, "UserData",
|
||||
Base64.encodeBytes("hello".getBytes())).entries());
|
||||
assertEquals(customize.buildMatrixParameters(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildRequestHeaders(), ImmutableMultimap.<String, String> of());
|
||||
assertEquals(customize.buildStringPayload(), null);
|
||||
|
@ -390,7 +384,6 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
verify(strategy);
|
||||
}
|
||||
|
||||
|
||||
@Test(expectedExceptions = IllegalArgumentException.class)
|
||||
public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_reusesKeyWhenToldToWithRunScriptButNoCredentials() {
|
||||
// setup constants
|
||||
|
@ -404,12 +397,13 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
KeyPair keyPair = createMock(KeyPair.class);
|
||||
|
||||
// setup expectations
|
||||
expect(strategy.knownKeys.get(new RegionAndName(region, group))).andReturn(null);
|
||||
expect(strategy.credentialsMap.asMap()).andReturn(Maps.<RegionAndName, KeyPair> newConcurrentMap());
|
||||
expect(options.getKeyPair()).andReturn(userSuppliedKeyPair);
|
||||
expect(options.getPublicKey()).andReturn(null).times(2);
|
||||
expect(options.getOverridingCredentials()).andReturn(null);
|
||||
expect(options.getRunScript()).andReturn(Statements.exec("echo foo"));
|
||||
expect(strategy.credentialsMap.getUnchecked(new RegionAndName(region, userSuppliedKeyPair))).andThrow(new NullPointerException());
|
||||
expect(strategy.credentialsMap.getUnchecked(new RegionAndName(region, userSuppliedKeyPair))).andThrow(
|
||||
new NullPointerException());
|
||||
|
||||
// replay mocks
|
||||
replay(options);
|
||||
|
@ -437,7 +431,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
KeyPair keyPair = createMock(KeyPair.class);
|
||||
|
||||
// setup expectations
|
||||
expect(strategy.knownKeys.get(new RegionAndName(region, group))).andReturn(null);
|
||||
expect(strategy.credentialsMap.asMap()).andReturn(Maps.<RegionAndName, KeyPair> newConcurrentMap());
|
||||
expect(options.getPublicKey()).andReturn(null).times(2);
|
||||
expect(options.getKeyPair()).andReturn(userSuppliedKeyPair);
|
||||
expect(options.getOverridingCredentials()).andReturn(null);
|
||||
|
@ -458,6 +452,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
verifyStrategy(strategy);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_reusesKeyWhenToldToWithRunScriptAndCredentialsSpecified() {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
|
@ -469,23 +464,24 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
EC2TemplateOptions options = createMock(EC2TemplateOptions.class);
|
||||
KeyPair keyPair = createMock(KeyPair.class);
|
||||
|
||||
ConcurrentMap<RegionAndName, KeyPair> backing = createMock(ConcurrentMap.class);
|
||||
|
||||
// setup expectations
|
||||
expect(strategy.knownKeys.get(new RegionAndName(region, group))).andReturn(null);
|
||||
expect(strategy.credentialsMap.asMap()).andReturn(backing).atLeastOnce();
|
||||
expect(backing.containsKey(new RegionAndName(region, group))).andReturn(false);
|
||||
expect(options.getKeyPair()).andReturn(userSuppliedKeyPair);
|
||||
expect(options.getPublicKey()).andReturn(null).times(2);
|
||||
expect(options.getOverridingCredentials()).andReturn(new Credentials(null, "MyRsa")).atLeastOnce();
|
||||
expect(
|
||||
strategy.knownKeys.put(
|
||||
new RegionAndName(region, userSuppliedKeyPair),
|
||||
KeyPair.builder().region(region).keyName(userSuppliedKeyPair).keyFingerprint("//TODO")
|
||||
.keyMaterial("MyRsa").build())).andReturn(null);
|
||||
strategy.credentialsMap.invalidate(new RegionAndName(region, userSuppliedKeyPair));
|
||||
backing.put(new RegionAndName(region, userSuppliedKeyPair), KeyPair.builder().region(region).keyName(
|
||||
userSuppliedKeyPair).keyFingerprint("//TODO").keyMaterial("MyRsa").build())).andReturn(null);
|
||||
expect(options.getRunScript()).andReturn(Statements.exec("echo foo"));
|
||||
expect(strategy.credentialsMap.getUnchecked(new RegionAndName(region, userSuppliedKeyPair))).andReturn(keyPair);
|
||||
|
||||
// replay mocks
|
||||
replay(options);
|
||||
replay(keyPair);
|
||||
replay(backing);
|
||||
replayStrategy(strategy);
|
||||
|
||||
// run
|
||||
|
@ -494,9 +490,11 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
// verify mocks
|
||||
verify(options);
|
||||
verify(keyPair);
|
||||
verify(backing);
|
||||
verifyStrategy(strategy);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Test
|
||||
public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_importsKeyPairAndUnsetsTemplateInstructionWhenPublicKeySuppliedAndAddsCredentialToMapWhenOverridingCredsAreSet() {
|
||||
// setup constants
|
||||
|
@ -505,65 +503,62 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
|
||||
// create mocks
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy();
|
||||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
KeyPair keyPair = new KeyPair(region, "jclouds#" + group, "fingerprint", null);
|
||||
AWSEC2TemplateOptions options = keyPair(group).authorizePublicKey("ssh-rsa").overrideCredentialsWith(
|
||||
new Credentials("foo", "private"));
|
||||
KeyPair keyPair = new KeyPair(region, group, "//TODO", null);
|
||||
ConcurrentMap<RegionAndName, KeyPair> backing = createMock(ConcurrentMap.class);
|
||||
|
||||
// setup expectations
|
||||
expect(strategy.knownKeys.get(new RegionAndName(region, group))).andReturn(null);
|
||||
expect(options.getPublicKey()).andReturn("ssh-rsa").times(2);
|
||||
expect(strategy.importExistingKeyPair.apply(new RegionNameAndPublicKeyMaterial(region, group, "ssh-rsa")))
|
||||
.andReturn(keyPair);
|
||||
expect(options.getOverridingCredentials()).andReturn(new Credentials("foo", "bar")).times(3);
|
||||
expect(options.getRunScript()).andReturn(null);
|
||||
expect(options.getPrivateKey()).andReturn(null);
|
||||
expect(options.dontAuthorizePublicKey()).andReturn(options);
|
||||
expect(
|
||||
strategy.knownKeys.put(new RegionAndName(region, group),
|
||||
keyPair.toBuilder().keyMaterial("bar").build())).andReturn(null);
|
||||
expect(strategy.credentialsMap.asMap()).andReturn(backing).atLeastOnce();
|
||||
expect(backing.containsKey(new RegionAndName(region, group))).andReturn(false);
|
||||
expect(strategy.importExistingKeyPair.apply(new RegionNameAndPublicKeyMaterial(region, group, "private")))
|
||||
.andReturn(keyPair);
|
||||
expect(backing.put(new RegionAndName(region, group), keyPair.toBuilder().keyMaterial("private").build()))
|
||||
.andReturn(null);
|
||||
|
||||
// replay mocks
|
||||
replay(options);
|
||||
replay(backing);
|
||||
replayStrategy(strategy);
|
||||
|
||||
// run
|
||||
assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options), "jclouds#" + group);
|
||||
assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options), group);
|
||||
|
||||
// verify mocks
|
||||
verify(options);
|
||||
verify(backing);
|
||||
verifyStrategy(strategy);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Test
|
||||
public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_importsKeyPairAndUnsetsTemplateInstructionWhenPublicKeySupplied() {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
String group = "group";
|
||||
AWSEC2TemplateOptions options = keyPair(group).authorizePublicKey("ssh-rsa");
|
||||
|
||||
// create mocks
|
||||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy();
|
||||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
|
||||
KeyPair keyPair = new KeyPair(region, "jclouds#" + group, "fingerprint", null);
|
||||
|
||||
ConcurrentMap<RegionAndName, KeyPair> backing = createMock(ConcurrentMap.class);
|
||||
|
||||
// setup expectations
|
||||
expect(strategy.knownKeys.get(new RegionAndName(region, group))).andReturn(null);
|
||||
expect(options.getPublicKey()).andReturn("ssh-rsa").times(2);
|
||||
expect(strategy.credentialsMap.asMap()).andReturn(backing).atLeastOnce();
|
||||
expect(backing.containsKey(new RegionAndName(region, group))).andReturn(false);
|
||||
expect(strategy.importExistingKeyPair.apply(new RegionNameAndPublicKeyMaterial(region, group, "ssh-rsa")))
|
||||
.andReturn(keyPair);
|
||||
expect(options.dontAuthorizePublicKey()).andReturn(options);
|
||||
expect(options.getOverridingCredentials()).andReturn(null);
|
||||
expect(options.getRunScript()).andReturn(null);
|
||||
expect(options.getPrivateKey()).andReturn(null);
|
||||
expect(strategy.knownKeys.put(new RegionAndName(region, group), keyPair)).andReturn(null);
|
||||
.andReturn(keyPair);
|
||||
expect(backing.put(new RegionAndName(region, group), keyPair)).andReturn(null);
|
||||
|
||||
// replay mocks
|
||||
replay(options);
|
||||
replay(backing);
|
||||
replayStrategy(strategy);
|
||||
|
||||
// run
|
||||
assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options), "jclouds#" + group);
|
||||
|
||||
// verify mocks
|
||||
verify(options);
|
||||
verify(backing);
|
||||
verifyStrategy(strategy);
|
||||
}
|
||||
|
||||
|
@ -579,9 +574,9 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy();
|
||||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
KeyPair keyPair = createMock(KeyPair.class);
|
||||
|
||||
|
||||
// setup expectations
|
||||
expect(strategy.knownKeys.get(new RegionAndName(region, group))).andReturn(null);
|
||||
expect(strategy.credentialsMap.asMap()).andReturn(Maps.<RegionAndName, KeyPair> newConcurrentMap());
|
||||
expect(options.getKeyPair()).andReturn(userSuppliedKeyPair);
|
||||
expect(options.shouldAutomaticallyCreateKeyPair()).andReturn(shouldAutomaticallyCreateKeyPair);
|
||||
expect(strategy.credentialsMap.getUnchecked(new RegionAndName(region, group))).andReturn(keyPair);
|
||||
|
@ -596,7 +591,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
|
||||
// run
|
||||
assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options),
|
||||
systemGeneratedKeyPairName);
|
||||
systemGeneratedKeyPairName);
|
||||
|
||||
// verify mocks
|
||||
verify(options);
|
||||
|
@ -604,6 +599,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
verifyStrategy(strategy);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_returnsExistingKeyIfAlreadyPresent() {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
|
@ -614,22 +610,28 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy();
|
||||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
KeyPair keyPair = createMock(KeyPair.class);
|
||||
ConcurrentMap<RegionAndName, KeyPair> backing = createMock(ConcurrentMap.class);
|
||||
|
||||
// setup expectations
|
||||
expect(strategy.knownKeys.get(new RegionAndName(region, group))).andReturn(keyPair);
|
||||
expect(strategy.credentialsMap.asMap()).andReturn(backing);
|
||||
expect(backing.containsKey(new RegionAndName(region, group))).andReturn(true);
|
||||
expect(strategy.credentialsMap.getUnchecked(new RegionAndName(region, group))).andReturn(keyPair);
|
||||
expect(keyPair.getKeyName()).andReturn(systemGeneratedKeyPairName).atLeastOnce();
|
||||
|
||||
// replay mocks
|
||||
replay(options);
|
||||
replay(keyPair);
|
||||
replay(backing);
|
||||
replayStrategy(strategy);
|
||||
|
||||
// run
|
||||
assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options),
|
||||
systemGeneratedKeyPairName);
|
||||
systemGeneratedKeyPairName);
|
||||
|
||||
// verify mocks
|
||||
verify(options);
|
||||
verify(keyPair);
|
||||
verify(backing);
|
||||
verifyStrategy(strategy);
|
||||
}
|
||||
|
||||
|
@ -647,7 +649,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
KeyPair keyPair = createMock(KeyPair.class);
|
||||
|
||||
// setup expectations
|
||||
expect(strategy.knownKeys.get(new RegionAndName(region, group))).andReturn(null);
|
||||
expect(strategy.credentialsMap.asMap()).andReturn(Maps.<RegionAndName, KeyPair> newConcurrentMap());
|
||||
expect(options.getPublicKey()).andReturn(null).times(2);
|
||||
expect(options.getKeyPair()).andReturn(userSuppliedKeyPair);
|
||||
expect(options.getRunScript()).andReturn(null);
|
||||
|
@ -682,11 +684,11 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
|
||||
// setup expectations
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String>of());
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String> of());
|
||||
expect(options.getGroups()).andReturn(groupNames).atLeastOnce();
|
||||
expect(options.getInboundPorts()).andReturn(ports).atLeastOnce();
|
||||
RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup,
|
||||
ports, shouldAuthorizeSelf);
|
||||
ports, shouldAuthorizeSelf);
|
||||
expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(group);
|
||||
|
||||
// replay mocks
|
||||
|
@ -716,11 +718,11 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
|
||||
// setup expectations
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String>of());
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String> of());
|
||||
expect(options.getGroups()).andReturn(groupNames).atLeastOnce();
|
||||
expect(options.getInboundPorts()).andReturn(ports).atLeastOnce();
|
||||
RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup,
|
||||
ports, shouldAuthorizeSelf);
|
||||
ports, shouldAuthorizeSelf);
|
||||
expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(generatedMarkerGroup);
|
||||
|
||||
// replay mocks
|
||||
|
@ -750,11 +752,11 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
|
||||
// setup expectations
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String>of());
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String> of());
|
||||
expect(options.getGroups()).andReturn(groupNames).atLeastOnce();
|
||||
expect(options.getInboundPorts()).andReturn(ports).atLeastOnce();
|
||||
RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup,
|
||||
ports, shouldAuthorizeSelf);
|
||||
ports, shouldAuthorizeSelf);
|
||||
expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(generatedMarkerGroup);
|
||||
|
||||
// replay mocks
|
||||
|
@ -785,12 +787,13 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
|
||||
// setup expectations
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String>of());
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String> of());
|
||||
expect(options.getGroups()).andReturn(groupNames).atLeastOnce();
|
||||
RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup,
|
||||
ports, shouldAuthorizeSelf);
|
||||
ports, shouldAuthorizeSelf);
|
||||
|
||||
expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(groupExisted ? "group" : null);
|
||||
expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules))
|
||||
.andReturn(groupExisted ? "group" : null);
|
||||
|
||||
// replay mocks
|
||||
replay(options);
|
||||
|
@ -820,12 +823,13 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
AWSEC2TemplateOptions options = createMock(AWSEC2TemplateOptions.class);
|
||||
|
||||
// setup expectations
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String>of("group1", "group2"));
|
||||
expect(options.getGroupIds()).andReturn(ImmutableSet.<String> of("group1", "group2"));
|
||||
expect(options.getGroups()).andReturn(groupNames).atLeastOnce();
|
||||
RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup,
|
||||
ports, shouldAuthorizeSelf);
|
||||
ports, shouldAuthorizeSelf);
|
||||
|
||||
expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(groupExisted ? "group" : null);
|
||||
expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules))
|
||||
.andReturn(groupExisted ? "group" : null);
|
||||
|
||||
// replay mocks
|
||||
replay(options);
|
||||
|
@ -838,6 +842,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
verify(options);
|
||||
verifyStrategy(strategy);
|
||||
}
|
||||
|
||||
public void testCreateNewPlacementGroupUnlessUserSpecifiedOtherwise_reusesKeyWhenToldTo() {
|
||||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
|
@ -859,7 +864,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
|
||||
// run
|
||||
assertEquals(strategy.createNewPlacementGroupUnlessUserSpecifiedOtherwise(region, group, options),
|
||||
userSuppliedPlacementGroup);
|
||||
userSuppliedPlacementGroup);
|
||||
|
||||
// verify mocks
|
||||
verify(options);
|
||||
|
@ -882,7 +887,8 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
// setup expectations
|
||||
expect(options.getPlacementGroup()).andReturn(userSuppliedPlacementGroup);
|
||||
expect(options.shouldAutomaticallyCreatePlacementGroup()).andReturn(shouldAutomaticallyCreatePlacementGroup);
|
||||
expect(strategy.placementGroupMap.getUnchecked(new RegionAndName(region, generatedMarkerGroup))).andReturn(generatedMarkerGroup);
|
||||
expect(strategy.placementGroupMap.getUnchecked(new RegionAndName(region, generatedMarkerGroup))).andReturn(
|
||||
generatedMarkerGroup);
|
||||
|
||||
// replay mocks
|
||||
replay(options);
|
||||
|
@ -890,7 +896,7 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
|
||||
// run
|
||||
assertEquals(strategy.createNewPlacementGroupUnlessUserSpecifiedOtherwise(region, group, options),
|
||||
generatedMarkerGroup);
|
||||
generatedMarkerGroup);
|
||||
|
||||
// verify mocks
|
||||
verify(options);
|
||||
|
@ -929,7 +935,6 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
}
|
||||
|
||||
private void verifyStrategy(CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions strategy) {
|
||||
verify(strategy.knownKeys);
|
||||
verify(strategy.credentialsMap);
|
||||
verify(strategy.securityGroupMap);
|
||||
verify(strategy.placementGroupMap);
|
||||
|
@ -939,19 +944,17 @@ public class CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptionsT
|
|||
|
||||
@SuppressWarnings("unchecked")
|
||||
private CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions setupStrategy() {
|
||||
Map<RegionAndName, KeyPair> knownKeys = createMock(Map.class);
|
||||
Cache<RegionAndName, KeyPair> credentialsMap = createMock(Cache.class);
|
||||
Cache<RegionAndName, String> securityGroupMap = createMock(Cache.class);
|
||||
Cache<RegionAndName, String> placementGroupMap = createMock(Cache.class);
|
||||
Function<RegionNameAndPublicKeyMaterial, KeyPair> importExistingKeyPair = createMock(Function.class);
|
||||
CreatePlacementGroupIfNeeded createPlacementGroupIfNeeded = createMock(CreatePlacementGroupIfNeeded.class);
|
||||
|
||||
return new CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions(knownKeys, credentialsMap, securityGroupMap,
|
||||
OPTIONS_PROVIDER, placementGroupMap, createPlacementGroupIfNeeded, importExistingKeyPair);
|
||||
return new CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions(credentialsMap, securityGroupMap,
|
||||
OPTIONS_PROVIDER, placementGroupMap, createPlacementGroupIfNeeded, importExistingKeyPair);
|
||||
}
|
||||
|
||||
private void replayStrategy(CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions strategy) {
|
||||
replay(strategy.knownKeys);
|
||||
replay(strategy.credentialsMap);
|
||||
replay(strategy.securityGroupMap);
|
||||
replay(strategy.placementGroupMap);
|
||||
|
|
Loading…
Reference in New Issue