mirror of
https://github.com/apache/jclouds.git
synced 2025-02-09 03:25:39 +00:00
JCLOUDS-570: Fallback to the GetImageStrategy
If the TemplateBuilderImpl is given an imageId but the image can not be found in the image cache, fallback to the GetImageStrategy to perform a call to the provider to try to get it. We've seen that in some cases images are not returned in the image list but they actually exist in the provider. This fix won't make them available when filtering by other properties such as the operating system, etc, but at least will make them available if their id is known.
This commit is contained in:
parent
a7e342422c
commit
39f77ad3f8
@ -28,6 +28,7 @@ import org.jclouds.compute.domain.Image;
|
|||||||
import org.jclouds.compute.domain.TemplateBuilder;
|
import org.jclouds.compute.domain.TemplateBuilder;
|
||||||
import org.jclouds.compute.domain.internal.TemplateBuilderImpl;
|
import org.jclouds.compute.domain.internal.TemplateBuilderImpl;
|
||||||
import org.jclouds.compute.options.TemplateOptions;
|
import org.jclouds.compute.options.TemplateOptions;
|
||||||
|
import org.jclouds.compute.strategy.GetImageStrategy;
|
||||||
import org.jclouds.domain.Location;
|
import org.jclouds.domain.Location;
|
||||||
|
|
||||||
import com.google.common.base.Supplier;
|
import com.google.common.base.Supplier;
|
||||||
@ -40,7 +41,7 @@ public class CloudSigmaTemplateBuilderImpl extends TemplateBuilderImpl {
|
|||||||
public CloudSigmaTemplateBuilderImpl(@Memoized Supplier<Set<? extends Location>> locations,
|
public CloudSigmaTemplateBuilderImpl(@Memoized Supplier<Set<? extends Location>> locations,
|
||||||
@Memoized Supplier<Set<? extends Image>> images, @Memoized Supplier<Set<? extends Hardware>> hardwares,
|
@Memoized Supplier<Set<? extends Image>> images, @Memoized Supplier<Set<? extends Hardware>> hardwares,
|
||||||
Supplier<Location> defaultLocation2, @Named("DEFAULT") Provider<TemplateOptions> optionsProvider,
|
Supplier<Location> defaultLocation2, @Named("DEFAULT") Provider<TemplateOptions> optionsProvider,
|
||||||
@Named("DEFAULT") Provider<TemplateBuilder> defaultTemplateProvider) {
|
@Named("DEFAULT") Provider<TemplateBuilder> defaultTemplateProvider, GetImageStrategy getImageStrategy) {
|
||||||
super(locations, images, hardwares, defaultLocation2, optionsProvider, defaultTemplateProvider);
|
super(locations, images, hardwares, defaultLocation2, optionsProvider, defaultTemplateProvider, getImageStrategy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ import org.jclouds.compute.domain.Image;
|
|||||||
import org.jclouds.compute.domain.TemplateBuilder;
|
import org.jclouds.compute.domain.TemplateBuilder;
|
||||||
import org.jclouds.compute.domain.internal.TemplateBuilderImpl;
|
import org.jclouds.compute.domain.internal.TemplateBuilderImpl;
|
||||||
import org.jclouds.compute.options.TemplateOptions;
|
import org.jclouds.compute.options.TemplateOptions;
|
||||||
|
import org.jclouds.compute.strategy.GetImageStrategy;
|
||||||
import org.jclouds.domain.Location;
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.ec2.compute.domain.RegionAndName;
|
import org.jclouds.ec2.compute.domain.RegionAndName;
|
||||||
import org.jclouds.util.Throwables2;
|
import org.jclouds.util.Throwables2;
|
||||||
@ -54,8 +55,9 @@ public class EC2TemplateBuilderImpl extends TemplateBuilderImpl {
|
|||||||
protected EC2TemplateBuilderImpl(@Memoized Supplier<Set<? extends Location>> locations,
|
protected EC2TemplateBuilderImpl(@Memoized Supplier<Set<? extends Location>> locations,
|
||||||
@Memoized Supplier<Set<? extends Image>> images, @Memoized Supplier<Set<? extends Hardware>> sizes,
|
@Memoized Supplier<Set<? extends Image>> images, @Memoized Supplier<Set<? extends Hardware>> sizes,
|
||||||
Supplier<Location> defaultLocation, @Named("DEFAULT") Provider<TemplateOptions> optionsProvider,
|
Supplier<Location> defaultLocation, @Named("DEFAULT") Provider<TemplateOptions> optionsProvider,
|
||||||
@Named("DEFAULT") Provider<TemplateBuilder> defaultTemplateProvider, Supplier<LoadingCache<RegionAndName, ? extends Image>> imageMap) {
|
@Named("DEFAULT") Provider<TemplateBuilder> defaultTemplateProvider, GetImageStrategy getImageStrategy,
|
||||||
super(locations, images, sizes, defaultLocation, optionsProvider, defaultTemplateProvider);
|
Supplier<LoadingCache<RegionAndName, ? extends Image>> imageMap) {
|
||||||
|
super(locations, images, sizes, defaultLocation, optionsProvider, defaultTemplateProvider, getImageStrategy);
|
||||||
this.lazyImageCache = imageMap;
|
this.lazyImageCache = imageMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,6 +48,7 @@ import org.jclouds.compute.domain.OsFamily;
|
|||||||
import org.jclouds.compute.domain.Template;
|
import org.jclouds.compute.domain.Template;
|
||||||
import org.jclouds.compute.domain.TemplateBuilder;
|
import org.jclouds.compute.domain.TemplateBuilder;
|
||||||
import org.jclouds.compute.options.TemplateOptions;
|
import org.jclouds.compute.options.TemplateOptions;
|
||||||
|
import org.jclouds.compute.strategy.GetImageStrategy;
|
||||||
import org.jclouds.domain.Location;
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.domain.LocationBuilder;
|
import org.jclouds.domain.LocationBuilder;
|
||||||
import org.jclouds.domain.LocationScope;
|
import org.jclouds.domain.LocationScope;
|
||||||
@ -212,11 +213,13 @@ public class EC2TemplateBuilderTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(defaultOptions);
|
expect(optionsProvider.get()).andReturn(defaultOptions);
|
||||||
|
|
||||||
replay(optionsProvider);
|
replay(optionsProvider);
|
||||||
replay(templateBuilderProvider);
|
replay(templateBuilderProvider);
|
||||||
|
replay(getImageStrategy);
|
||||||
Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet
|
Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet
|
||||||
.<Location> of(location));
|
.<Location> of(location));
|
||||||
Supplier<Set<? extends Hardware>> sizes = Suppliers.<Set<? extends Hardware>> ofInstance(ImmutableSet
|
Supplier<Set<? extends Hardware>> sizes = Suppliers.<Set<? extends Hardware>> ofInstance(ImmutableSet
|
||||||
@ -225,7 +228,7 @@ public class EC2TemplateBuilderTest {
|
|||||||
m2_4xlarge().build(), g2_2xlarge().build(), CC1_4XLARGE));
|
m2_4xlarge().build(), g2_2xlarge().build(), CC1_4XLARGE));
|
||||||
|
|
||||||
return new EC2TemplateBuilderImpl(locations, images, sizes, Suppliers.ofInstance(location), optionsProvider,
|
return new EC2TemplateBuilderImpl(locations, images, sizes, Suppliers.ofInstance(location), optionsProvider,
|
||||||
templateBuilderProvider, imageCache) {
|
templateBuilderProvider, getImageStrategy, imageCache) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@ import org.jclouds.compute.domain.TemplateBuilder;
|
|||||||
import org.jclouds.compute.domain.internal.TemplateBuilderImpl;
|
import org.jclouds.compute.domain.internal.TemplateBuilderImpl;
|
||||||
import org.jclouds.compute.domain.internal.TemplateBuilderImplTest;
|
import org.jclouds.compute.domain.internal.TemplateBuilderImplTest;
|
||||||
import org.jclouds.compute.options.TemplateOptions;
|
import org.jclouds.compute.options.TemplateOptions;
|
||||||
|
import org.jclouds.compute.strategy.GetImageStrategy;
|
||||||
import org.jclouds.domain.Location;
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.ec2.compute.domain.RegionAndName;
|
import org.jclouds.ec2.compute.domain.RegionAndName;
|
||||||
import org.jclouds.ec2.compute.functions.ImagesToRegionAndIdMap;
|
import org.jclouds.ec2.compute.functions.ImagesToRegionAndIdMap;
|
||||||
@ -68,7 +69,7 @@ public class EC2TemplateBuilderImplTest extends TemplateBuilderImplTest {
|
|||||||
protected EC2TemplateBuilderImpl createTemplateBuilder(final Image knownImage,
|
protected EC2TemplateBuilderImpl createTemplateBuilder(final Image knownImage,
|
||||||
@Memoized Supplier<Set<? extends Location>> locations, @Memoized final Supplier<Set<? extends Image>> images,
|
@Memoized Supplier<Set<? extends Location>> locations, @Memoized final Supplier<Set<? extends Image>> images,
|
||||||
@Memoized Supplier<Set<? extends Hardware>> sizes, Location defaultLocation,
|
@Memoized Supplier<Set<? extends Hardware>> sizes, Location defaultLocation,
|
||||||
Provider<TemplateOptions> optionsProvider, Provider<TemplateBuilder> templateBuilderProvider) {
|
Provider<TemplateOptions> optionsProvider, Provider<TemplateBuilder> templateBuilderProvider, GetImageStrategy getImageStrategy) {
|
||||||
|
|
||||||
LoadingCache<RegionAndName, ? extends Image> imageMap;
|
LoadingCache<RegionAndName, ? extends Image> imageMap;
|
||||||
if (knownImage != null) {
|
if (knownImage != null) {
|
||||||
@ -88,7 +89,7 @@ public class EC2TemplateBuilderImplTest extends TemplateBuilderImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return new EC2TemplateBuilderImpl(locations, images, sizes, Suppliers.ofInstance(defaultLocation),
|
return new EC2TemplateBuilderImpl(locations, images, sizes, Suppliers.ofInstance(defaultLocation),
|
||||||
optionsProvider, templateBuilderProvider, Suppliers.<LoadingCache<RegionAndName, ? extends Image>>ofInstance(imageMap));
|
optionsProvider, templateBuilderProvider, getImageStrategy, Suppliers.<LoadingCache<RegionAndName, ? extends Image>>ofInstance(imageMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -118,6 +119,7 @@ public class EC2TemplateBuilderImplTest extends TemplateBuilderImplTest {
|
|||||||
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
||||||
Image knownImage = createMock(Image.class);
|
Image knownImage = createMock(Image.class);
|
||||||
OperatingSystem os = createMock(OperatingSystem.class);
|
OperatingSystem os = createMock(OperatingSystem.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(defaultOptions);
|
expect(optionsProvider.get()).andReturn(defaultOptions);
|
||||||
|
|
||||||
@ -137,22 +139,14 @@ public class EC2TemplateBuilderImplTest extends TemplateBuilderImplTest {
|
|||||||
expect(os.getArch()).andReturn("paravirtual").atLeastOnce();
|
expect(os.getArch()).andReturn("paravirtual").atLeastOnce();
|
||||||
expect(os.is64Bit()).andReturn(false).atLeastOnce();
|
expect(os.is64Bit()).andReturn(false).atLeastOnce();
|
||||||
|
|
||||||
replay(knownImage);
|
replay(knownImage, os, defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
replay(os);
|
|
||||||
replay(defaultOptions);
|
|
||||||
replay(optionsProvider);
|
|
||||||
replay(templateBuilderProvider);
|
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(knownImage, locations, images, sizes, region,
|
TemplateBuilderImpl template = createTemplateBuilder(knownImage, locations, images, sizes, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
assertEquals(template.imageId("us-east-1/ami").build().getImage(), knownImage);
|
assertEquals(template.imageId("us-east-1/ami").build().getImage(), knownImage);
|
||||||
|
|
||||||
verify(knownImage);
|
verify(knownImage, os, defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
verify(os);
|
|
||||||
verify(defaultOptions);
|
|
||||||
verify(optionsProvider);
|
|
||||||
verify(templateBuilderProvider);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -169,29 +163,25 @@ public class EC2TemplateBuilderImplTest extends TemplateBuilderImplTest {
|
|||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
||||||
Image knownImage = createMock(Image.class);
|
Image knownImage = createMock(Image.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
expect(knownImage.getId()).andReturn("region/ami").anyTimes();
|
expect(knownImage.getId()).andReturn("region/ami").anyTimes();
|
||||||
expect(knownImage.getProviderId()).andReturn("ami").anyTimes();
|
expect(knownImage.getProviderId()).andReturn("ami").anyTimes();
|
||||||
expect(knownImage.getLocation()).andReturn(region).anyTimes();
|
expect(knownImage.getLocation()).andReturn(region).anyTimes();
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(defaultOptions);
|
expect(optionsProvider.get()).andReturn(defaultOptions);
|
||||||
|
|
||||||
replay(knownImage);
|
replay(knownImage, defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
replay(defaultOptions);
|
|
||||||
replay(optionsProvider);
|
|
||||||
replay(templateBuilderProvider);
|
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(knownImage, locations, images, sizes, region,
|
TemplateBuilderImpl template = createTemplateBuilder(knownImage, locations, images, sizes, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
try {
|
try {
|
||||||
template.imageId("ami").build();
|
template.imageId("ami").build();
|
||||||
fail("Expected IllegalArgumentException");
|
fail("Expected IllegalArgumentException");
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
verify(knownImage);
|
|
||||||
verify(defaultOptions);
|
verify(knownImage, defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
verify(optionsProvider);
|
|
||||||
verify(templateBuilderProvider);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -208,6 +198,7 @@ public class EC2TemplateBuilderImplTest extends TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
Image knownImage = createMock(Image.class);
|
Image knownImage = createMock(Image.class);
|
||||||
expect(knownImage.getId()).andReturn("region/ami").anyTimes();
|
expect(knownImage.getId()).andReturn("region/ami").anyTimes();
|
||||||
expect(knownImage.getProviderId()).andReturn("ami").anyTimes();
|
expect(knownImage.getProviderId()).andReturn("ami").anyTimes();
|
||||||
@ -216,22 +207,21 @@ public class EC2TemplateBuilderImplTest extends TemplateBuilderImplTest {
|
|||||||
expect(defaultLocation.getId()).andReturn("region");
|
expect(defaultLocation.getId()).andReturn("region");
|
||||||
expect(optionsProvider.get()).andReturn(defaultOptions);
|
expect(optionsProvider.get()).andReturn(defaultOptions);
|
||||||
|
|
||||||
replay(knownImage);
|
replay(knownImage, defaultOptions, defaultLocation, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
replay(defaultOptions);
|
|
||||||
replay(defaultLocation);
|
|
||||||
replay(optionsProvider);
|
|
||||||
replay(templateBuilderProvider);
|
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(knownImage, locations, images, sizes, defaultLocation,
|
TemplateBuilderImpl template = createTemplateBuilder(knownImage, locations, images, sizes, defaultLocation,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
assertEquals(template.imageId("region/bad").build().getImage(), knownImage);
|
assertEquals(template.imageId("region/bad").build().getImage(), knownImage);
|
||||||
|
|
||||||
verify(knownImage);
|
verify(knownImage, defaultOptions, defaultLocation, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
verify(defaultOptions);
|
}
|
||||||
verify(defaultLocation);
|
|
||||||
verify(optionsProvider);
|
// The EC2 provider already overrides the getImage method so this test is not useful for EC2
|
||||||
verify(templateBuilderProvider);
|
@Override
|
||||||
|
@Test(enabled = false)
|
||||||
|
public void testFindImageWithIdDefaultToGetImageStrategy() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ import org.jclouds.compute.domain.Image;
|
|||||||
import org.jclouds.compute.domain.TemplateBuilder;
|
import org.jclouds.compute.domain.TemplateBuilder;
|
||||||
import org.jclouds.compute.domain.internal.TemplateBuilderImpl;
|
import org.jclouds.compute.domain.internal.TemplateBuilderImpl;
|
||||||
import org.jclouds.compute.options.TemplateOptions;
|
import org.jclouds.compute.options.TemplateOptions;
|
||||||
|
import org.jclouds.compute.strategy.GetImageStrategy;
|
||||||
import org.jclouds.domain.Location;
|
import org.jclouds.domain.Location;
|
||||||
|
|
||||||
import com.google.common.base.Supplier;
|
import com.google.common.base.Supplier;
|
||||||
@ -42,7 +43,7 @@ public class VCloudTemplateBuilderImpl extends TemplateBuilderImpl {
|
|||||||
protected VCloudTemplateBuilderImpl(@Memoized Supplier<Set<? extends Location>> locations,
|
protected VCloudTemplateBuilderImpl(@Memoized Supplier<Set<? extends Location>> locations,
|
||||||
@Memoized Supplier<Set<? extends Image>> images, @Memoized Supplier<Set<? extends Hardware>> sizes,
|
@Memoized Supplier<Set<? extends Image>> images, @Memoized Supplier<Set<? extends Hardware>> sizes,
|
||||||
Supplier<Location> defaultLocation, @Named("DEFAULT") Provider<TemplateOptions> optionsProvider,
|
Supplier<Location> defaultLocation, @Named("DEFAULT") Provider<TemplateOptions> optionsProvider,
|
||||||
@Named("DEFAULT") Provider<TemplateBuilder> defaultTemplateProvider) {
|
@Named("DEFAULT") Provider<TemplateBuilder> defaultTemplateProvider, GetImageStrategy getImageStrategy) {
|
||||||
super(locations, images, sizes, defaultLocation, optionsProvider, defaultTemplateProvider);
|
super(locations, images, sizes, defaultLocation, optionsProvider, defaultTemplateProvider, getImageStrategy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,6 +53,7 @@ import org.jclouds.compute.domain.TemplateBuilder;
|
|||||||
import org.jclouds.compute.domain.TemplateBuilderSpec;
|
import org.jclouds.compute.domain.TemplateBuilderSpec;
|
||||||
import org.jclouds.compute.options.TemplateOptions;
|
import org.jclouds.compute.options.TemplateOptions;
|
||||||
import org.jclouds.compute.reference.ComputeServiceConstants;
|
import org.jclouds.compute.reference.ComputeServiceConstants;
|
||||||
|
import org.jclouds.compute.strategy.GetImageStrategy;
|
||||||
import org.jclouds.domain.Location;
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.logging.Logger;
|
import org.jclouds.logging.Logger;
|
||||||
|
|
||||||
@ -60,6 +61,7 @@ import com.google.common.annotations.VisibleForTesting;
|
|||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
import com.google.common.base.Objects.ToStringHelper;
|
import com.google.common.base.Objects.ToStringHelper;
|
||||||
|
import com.google.common.base.Optional;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
import com.google.common.base.Supplier;
|
import com.google.common.base.Supplier;
|
||||||
@ -85,6 +87,7 @@ public class TemplateBuilderImpl implements TemplateBuilder {
|
|||||||
protected final Supplier<Location> defaultLocation;
|
protected final Supplier<Location> defaultLocation;
|
||||||
protected final Provider<TemplateOptions> optionsProvider;
|
protected final Provider<TemplateOptions> optionsProvider;
|
||||||
protected final Provider<TemplateBuilder> defaultTemplateProvider;
|
protected final Provider<TemplateBuilder> defaultTemplateProvider;
|
||||||
|
protected final GetImageStrategy getImageStrategy;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected Location location;
|
protected Location location;
|
||||||
@ -133,13 +136,14 @@ public class TemplateBuilderImpl implements TemplateBuilder {
|
|||||||
protected TemplateBuilderImpl(@Memoized Supplier<Set<? extends Location>> locations,
|
protected TemplateBuilderImpl(@Memoized Supplier<Set<? extends Location>> locations,
|
||||||
@Memoized Supplier<Set<? extends Image>> images, @Memoized Supplier<Set<? extends Hardware>> hardwares,
|
@Memoized Supplier<Set<? extends Image>> images, @Memoized Supplier<Set<? extends Hardware>> hardwares,
|
||||||
Supplier<Location> defaultLocation2, @Named("DEFAULT") Provider<TemplateOptions> optionsProvider,
|
Supplier<Location> defaultLocation2, @Named("DEFAULT") Provider<TemplateOptions> optionsProvider,
|
||||||
@Named("DEFAULT") Provider<TemplateBuilder> defaultTemplateProvider) {
|
@Named("DEFAULT") Provider<TemplateBuilder> defaultTemplateProvider, GetImageStrategy getImageStrategy) {
|
||||||
this.locations = locations;
|
this.locations = checkNotNull(locations, "locations");
|
||||||
this.images = images;
|
this.images = checkNotNull(images, "locations");
|
||||||
this.hardwares = hardwares;
|
this.hardwares = checkNotNull(hardwares, "hardwares");
|
||||||
this.defaultLocation = defaultLocation2;
|
this.defaultLocation = checkNotNull(defaultLocation2, "defaultLocation2");
|
||||||
this.optionsProvider = optionsProvider;
|
this.optionsProvider = checkNotNull(optionsProvider, "optionsProvider");
|
||||||
this.defaultTemplateProvider = defaultTemplateProvider;
|
this.defaultTemplateProvider = checkNotNull(defaultTemplateProvider, "defaultTemplateProvider");
|
||||||
|
this.getImageStrategy = checkNotNull(getImageStrategy, "getImageStrategy");
|
||||||
}
|
}
|
||||||
|
|
||||||
static Predicate<Hardware> supportsImagesPredicate(final Iterable<? extends Image> images) {
|
static Predicate<Hardware> supportsImagesPredicate(final Iterable<? extends Image> images) {
|
||||||
@ -727,12 +731,21 @@ public class TemplateBuilderImpl implements TemplateBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Image findImageWithId(Set<? extends Image> images) {
|
private Image findImageWithId(Set<? extends Image> images) {
|
||||||
Image image;
|
// Try find the image in the cache and fallback to the GetImageStrategy
|
||||||
// TODO: switch to GetImageStrategy in version 1.5
|
// see https://issues.apache.org/jira/browse/JCLOUDS-570
|
||||||
image = tryFind(images, idPredicate).orNull();
|
Optional<? extends Image> image = tryFind(images, idPredicate);
|
||||||
if (image == null)
|
if (!image.isPresent()) {
|
||||||
throwNoSuchElementExceptionAfterLoggingImageIds(format("%s not found", idPredicate), images);
|
logger.warn("Image %s not found in the image cache. Trying to get it directly...", imageId);
|
||||||
return image;
|
// Note that this might generate make a call to the provider instead of using a cache, but
|
||||||
|
// this will be executed rarely, only when an image is not present in the image list but
|
||||||
|
// it actually exists in the provider. It shouldn't be an expensive call so using a cache just for
|
||||||
|
// this corner case is overkill.
|
||||||
|
image = Optional.fromNullable(getImageStrategy.getImage(imageId));
|
||||||
|
if (!image.isPresent()) {
|
||||||
|
throwNoSuchElementExceptionAfterLoggingImageIds(format("%s not found", idPredicate), images);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return image.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Hardware findHardwareWithId(Set<? extends Hardware> hardwaresToSearch) {
|
private Hardware findHardwareWithId(Set<? extends Hardware> hardwaresToSearch) {
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.jclouds.compute.domain.internal;
|
package org.jclouds.compute.domain.internal;
|
||||||
|
|
||||||
|
import static org.easymock.EasyMock.anyObject;
|
||||||
import static org.easymock.EasyMock.createMock;
|
import static org.easymock.EasyMock.createMock;
|
||||||
import static org.easymock.EasyMock.expect;
|
import static org.easymock.EasyMock.expect;
|
||||||
import static org.easymock.EasyMock.replay;
|
import static org.easymock.EasyMock.replay;
|
||||||
@ -30,6 +31,7 @@ import java.util.Set;
|
|||||||
|
|
||||||
import javax.inject.Provider;
|
import javax.inject.Provider;
|
||||||
|
|
||||||
|
import org.easymock.EasyMock;
|
||||||
import org.jclouds.compute.domain.Hardware;
|
import org.jclouds.compute.domain.Hardware;
|
||||||
import org.jclouds.compute.domain.HardwareBuilder;
|
import org.jclouds.compute.domain.HardwareBuilder;
|
||||||
import org.jclouds.compute.domain.Image;
|
import org.jclouds.compute.domain.Image;
|
||||||
@ -43,6 +45,7 @@ import org.jclouds.compute.domain.TemplateBuilder;
|
|||||||
import org.jclouds.compute.domain.Volume;
|
import org.jclouds.compute.domain.Volume;
|
||||||
import org.jclouds.compute.options.TemplateOptions;
|
import org.jclouds.compute.options.TemplateOptions;
|
||||||
import org.jclouds.compute.predicates.ImagePredicates;
|
import org.jclouds.compute.predicates.ImagePredicates;
|
||||||
|
import org.jclouds.compute.strategy.GetImageStrategy;
|
||||||
import org.jclouds.domain.Location;
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.domain.LocationBuilder;
|
import org.jclouds.domain.LocationBuilder;
|
||||||
import org.jclouds.domain.LocationScope;
|
import org.jclouds.domain.LocationScope;
|
||||||
@ -135,15 +138,15 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
|
replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
replay(defaultTemplate, optionsProvider, templateBuilderProvider);
|
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
assert template.locationPredicate.apply(hardware);
|
assert template.locationPredicate.apply(hardware);
|
||||||
|
|
||||||
verify(defaultTemplate, optionsProvider, templateBuilderProvider);
|
verify(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -165,16 +168,17 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
replay(defaultTemplate, optionsProvider, templateBuilderProvider);
|
replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, inputImages, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, inputImages, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
template = templateBuilderPerTestCustomizer.apply(template);
|
template = templateBuilderPerTestCustomizer.apply(template);
|
||||||
|
|
||||||
assertEquals(template.resolveImage(hardware, inputImages.get()), expectedBest);
|
assertEquals(template.resolveImage(hardware, inputImages.get()), expectedBest);
|
||||||
|
|
||||||
verify(defaultTemplate, optionsProvider, templateBuilderProvider);
|
verify(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void doTestResolveImages(Supplier<Set<? extends Image>> inputImages, Image expectedBest) {
|
protected void doTestResolveImages(Supplier<Set<? extends Image>> inputImages, Image expectedBest) {
|
||||||
@ -293,17 +297,18 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(new TemplateOptions());
|
expect(optionsProvider.get()).andReturn(new TemplateOptions());
|
||||||
|
|
||||||
replay(defaultTemplate, optionsProvider, templateBuilderProvider);
|
replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
assertEquals(template.smallest().osArchMatches("X86_32").build().getImage(), image);
|
assertEquals(template.smallest().osArchMatches("X86_32").build().getImage(), image);
|
||||||
|
|
||||||
verify(defaultTemplate, optionsProvider, templateBuilderProvider);
|
verify(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -322,21 +327,18 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(new TemplateOptions());
|
expect(optionsProvider.get()).andReturn(new TemplateOptions());
|
||||||
|
|
||||||
replay(defaultTemplate);
|
replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
replay(optionsProvider);
|
|
||||||
replay(templateBuilderProvider);
|
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
template.imageId(getProviderFormatId("imageId")).build();
|
template.imageId(getProviderFormatId("imageId")).build();
|
||||||
|
|
||||||
verify(defaultTemplate);
|
verify(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
verify(optionsProvider);
|
|
||||||
verify(templateBuilderProvider);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -355,17 +357,18 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(new TemplateOptions());
|
expect(optionsProvider.get()).andReturn(new TemplateOptions());
|
||||||
|
|
||||||
replay(defaultTemplate, optionsProvider, templateBuilderProvider);
|
replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
template.imageId(getProviderFormatId("imageId")).build();
|
template.imageId(getProviderFormatId("imageId")).build();
|
||||||
|
|
||||||
verify(defaultTemplate, optionsProvider, templateBuilderProvider);
|
verify(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,20 +388,21 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(new TemplateOptions());
|
expect(optionsProvider.get()).andReturn(new TemplateOptions());
|
||||||
|
|
||||||
replay(defaultTemplate, optionsProvider, templateBuilderProvider);
|
replay(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(image, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(image, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
try {
|
try {
|
||||||
template.imageId(getProviderFormatId("imageId")).build();
|
template.imageId(getProviderFormatId("imageId")).build();
|
||||||
fail("Expected NoSuchElementException");
|
fail("Expected NoSuchElementException");
|
||||||
} catch (NoSuchElementException e) {
|
} catch (NoSuchElementException e) {
|
||||||
// make sure message is succinct
|
// make sure message is succinct
|
||||||
assertEquals(e.getMessage(), "no hardware profiles support images matching params: idEquals(differentImageId)");
|
assertEquals(e.getMessage(), "no hardware profiles support images matching params: idEquals(differentImageId)");
|
||||||
verify(defaultTemplate, optionsProvider, templateBuilderProvider);
|
verify(defaultTemplate, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -417,26 +421,21 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(templateBuilderProvider.get()).andReturn(defaultTemplate);
|
expect(templateBuilderProvider.get()).andReturn(defaultTemplate);
|
||||||
expect(defaultTemplate.options(from)).andReturn(defaultTemplate);
|
expect(defaultTemplate.options(from)).andReturn(defaultTemplate);
|
||||||
expect(defaultTemplate.build()).andReturn(null);
|
expect(defaultTemplate.build()).andReturn(null);
|
||||||
expect(optionsProvider.get()).andReturn(from).atLeastOnce();
|
expect(optionsProvider.get()).andReturn(from).atLeastOnce();
|
||||||
|
|
||||||
replay(defaultTemplate);
|
replay(defaultTemplate, defaultLocation, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
replay(defaultLocation);
|
|
||||||
replay(optionsProvider);
|
|
||||||
replay(templateBuilderProvider);
|
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, defaultLocation,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, defaultLocation,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
template.options(options).build();
|
template.options(options).build();
|
||||||
|
|
||||||
verify(defaultTemplate);
|
verify(defaultTemplate, defaultLocation, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
verify(defaultLocation);
|
|
||||||
verify(optionsProvider);
|
|
||||||
verify(templateBuilderProvider);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -453,32 +452,27 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(templateBuilderProvider.get()).andReturn(defaultTemplate);
|
expect(templateBuilderProvider.get()).andReturn(defaultTemplate);
|
||||||
expect(defaultTemplate.build()).andReturn(null);
|
expect(defaultTemplate.build()).andReturn(null);
|
||||||
|
|
||||||
replay(defaultTemplate);
|
replay(defaultTemplate, defaultLocation, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
replay(defaultLocation);
|
|
||||||
replay(optionsProvider);
|
|
||||||
replay(templateBuilderProvider);
|
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, defaultLocation,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, defaultLocation,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
template.build();
|
template.build();
|
||||||
|
|
||||||
verify(defaultTemplate);
|
verify(defaultTemplate, defaultLocation, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
verify(defaultLocation);
|
|
||||||
verify(optionsProvider);
|
|
||||||
verify(templateBuilderProvider);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected TemplateBuilderImpl createTemplateBuilder(Image knownImage, Supplier<Set<? extends Location>> locations,
|
protected TemplateBuilderImpl createTemplateBuilder(Image knownImage, Supplier<Set<? extends Location>> locations,
|
||||||
Supplier<Set<? extends Image>> images, Supplier<Set<? extends Hardware>> hardwares,
|
Supplier<Set<? extends Image>> images, Supplier<Set<? extends Hardware>> hardwares,
|
||||||
Location defaultLocation, Provider<TemplateOptions> optionsProvider,
|
Location defaultLocation, Provider<TemplateOptions> optionsProvider,
|
||||||
Provider<TemplateBuilder> templateBuilderProvider) {
|
Provider<TemplateBuilder> templateBuilderProvider, GetImageStrategy getImageStrategy) {
|
||||||
TemplateBuilderImpl template = new TemplateBuilderImpl(locations, images, hardwares, Suppliers
|
TemplateBuilderImpl template = new TemplateBuilderImpl(locations, images, hardwares, Suppliers
|
||||||
.ofInstance(defaultLocation), optionsProvider, templateBuilderProvider);
|
.ofInstance(defaultLocation), optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
return template;
|
return template;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -499,16 +493,17 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
expect(optionsProvider.get()).andReturn(from).atLeastOnce();
|
expect(optionsProvider.get()).andReturn(from).atLeastOnce();
|
||||||
|
|
||||||
replay(defaultOptions, optionsProvider, templateBuilderProvider);
|
replay(defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
assertEquals(template.imageId(image.getId()).locationId(provider.getId()).build().getLocation(), region);
|
assertEquals(template.imageId(image.getId()).locationId(provider.getId()).build().getLocation(), region);
|
||||||
|
|
||||||
verify(defaultOptions, optionsProvider, templateBuilderProvider);
|
verify(defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -522,13 +517,12 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
replay(defaultOptions);
|
replay(defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
replay(optionsProvider);
|
|
||||||
replay(templateBuilderProvider);
|
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
template.imageId("foo").locationId("location").build();
|
template.imageId("foo").locationId("location").build();
|
||||||
@ -537,9 +531,7 @@ public class TemplateBuilderImplTest {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
verify(defaultOptions);
|
verify(defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
verify(optionsProvider);
|
|
||||||
verify(templateBuilderProvider);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -554,14 +546,14 @@ public class TemplateBuilderImplTest {
|
|||||||
.<Hardware> of());
|
.<Hardware> of());
|
||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(from).atLeastOnce();
|
expect(optionsProvider.get()).andReturn(from).atLeastOnce();
|
||||||
|
|
||||||
replay(optionsProvider);
|
replay(optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
replay(templateBuilderProvider);
|
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
template.imageId("foo").options(provideTemplateOptions()).locationId("location").build();
|
template.imageId("foo").options(provideTemplateOptions()).locationId("location").build();
|
||||||
@ -570,8 +562,7 @@ public class TemplateBuilderImplTest {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
verify(optionsProvider);
|
verify(optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
verify(templateBuilderProvider);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -584,13 +575,14 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(defaultOptions);
|
expect(optionsProvider.get()).andReturn(defaultOptions);
|
||||||
|
|
||||||
replay(defaultOptions, optionsProvider, templateBuilderProvider);
|
replay(defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
template.os64Bit(true).build();
|
template.os64Bit(true).build();
|
||||||
@ -599,7 +591,7 @@ public class TemplateBuilderImplTest {
|
|||||||
assertEquals(e.getMessage(), "no images present!");
|
assertEquals(e.getMessage(), "no images present!");
|
||||||
}
|
}
|
||||||
|
|
||||||
verify(defaultOptions, optionsProvider, templateBuilderProvider);
|
verify(defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -612,13 +604,14 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(defaultOptions);
|
expect(optionsProvider.get()).andReturn(defaultOptions);
|
||||||
|
|
||||||
replay(defaultOptions, optionsProvider, templateBuilderProvider);
|
replay(defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
template.os64Bit(true).build();
|
template.os64Bit(true).build();
|
||||||
@ -627,7 +620,7 @@ public class TemplateBuilderImplTest {
|
|||||||
assertEquals(e.getMessage(), "no hardware profiles present!");
|
assertEquals(e.getMessage(), "no hardware profiles present!");
|
||||||
}
|
}
|
||||||
|
|
||||||
verify(defaultOptions, optionsProvider, templateBuilderProvider);
|
verify(defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -641,13 +634,15 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(defaultOptions);
|
expect(optionsProvider.get()).andReturn(defaultOptions);
|
||||||
|
expect(getImageStrategy.getImage(anyObject(String.class))).andReturn(null);
|
||||||
|
|
||||||
replay(defaultOptions, optionsProvider, templateBuilderProvider);
|
replay(defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
template.imageId("region/imageId2").build();
|
template.imageId("region/imageId2").build();
|
||||||
@ -671,13 +666,14 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
TemplateOptions defaultOptions = createMock(TemplateOptions.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(defaultOptions);
|
expect(optionsProvider.get()).andReturn(defaultOptions);
|
||||||
|
|
||||||
replay(defaultOptions, optionsProvider, templateBuilderProvider);
|
replay(defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, region,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
template.imageDescriptionMatches("notDescription").build();
|
template.imageDescriptionMatches("notDescription").build();
|
||||||
@ -687,7 +683,7 @@ public class TemplateBuilderImplTest {
|
|||||||
assertEquals(e.getMessage(), "no image matched predicate: Predicates.and(nullEqualToIsParentOrIsGrandparentOfCurrentLocation(),imageDescription(notDescription))");
|
assertEquals(e.getMessage(), "no image matched predicate: Predicates.and(nullEqualToIsParentOrIsGrandparentOfCurrentLocation(),imageDescription(notDescription))");
|
||||||
}
|
}
|
||||||
|
|
||||||
verify(defaultOptions, optionsProvider, templateBuilderProvider);
|
verify(defaultOptions, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected TemplateOptions provideTemplateOptions() {
|
protected TemplateOptions provideTemplateOptions() {
|
||||||
@ -706,13 +702,15 @@ public class TemplateBuilderImplTest {
|
|||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
TemplateOptions from = provideTemplateOptions();
|
TemplateOptions from = provideTemplateOptions();
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
expect(optionsProvider.get()).andReturn(from);
|
expect(optionsProvider.get()).andReturn(from);
|
||||||
|
expect(getImageStrategy.getImage(anyObject(String.class))).andReturn(null);
|
||||||
|
|
||||||
replay(defaultLocation, optionsProvider, templateBuilderProvider);
|
replay(defaultLocation, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, defaultLocation,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, defaultLocation,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
template.imageId("region/ami").options(provideTemplateOptions()).build();
|
template.imageId("region/ami").options(provideTemplateOptions()).build();
|
||||||
@ -735,13 +733,12 @@ public class TemplateBuilderImplTest {
|
|||||||
Location defaultLocation = createMock(Location.class);
|
Location defaultLocation = createMock(Location.class);
|
||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
replay(defaultLocation);
|
replay(defaultLocation, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
replay(optionsProvider);
|
|
||||||
replay(templateBuilderProvider);
|
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, defaultLocation,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, defaultLocation,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
template.imageDescriptionMatches("imageDescriptionMatches");
|
template.imageDescriptionMatches("imageDescriptionMatches");
|
||||||
template.imageNameMatches("imageNameMatches");
|
template.imageNameMatches("imageNameMatches");
|
||||||
@ -767,9 +764,69 @@ public class TemplateBuilderImplTest {
|
|||||||
assertEquals(template.osFamily, null);
|
assertEquals(template.osFamily, null);
|
||||||
assertEquals(template.imageId, "myid");
|
assertEquals(template.imageId, "myid");
|
||||||
|
|
||||||
verify(defaultLocation);
|
verify(defaultLocation, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
verify(optionsProvider);
|
}
|
||||||
verify(templateBuilderProvider);
|
|
||||||
|
@Test
|
||||||
|
public void testFindImageWithIdDefaultToGetImageStrategy() {
|
||||||
|
final Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet
|
||||||
|
.<Location> of(region));
|
||||||
|
final Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet
|
||||||
|
.<Image> of(
|
||||||
|
new ImageBuilder()
|
||||||
|
.ids("Ubuntu 11.04 x64")
|
||||||
|
.name("Ubuntu 11.04 x64")
|
||||||
|
.description("Ubuntu 11.04 x64")
|
||||||
|
.location(region)
|
||||||
|
.status(Status.AVAILABLE)
|
||||||
|
.operatingSystem(
|
||||||
|
OperatingSystem.builder().name("Ubuntu 11.04 x64").description("Ubuntu 11.04 x64")
|
||||||
|
.is64Bit(true).version("11.04").family(OsFamily.UBUNTU).build()).build(),
|
||||||
|
new ImageBuilder()
|
||||||
|
.ids("Ubuntu 11.04 64-bit")
|
||||||
|
.name("Ubuntu 11.04 64-bit")
|
||||||
|
.description("Ubuntu 11.04 64-bit")
|
||||||
|
.location(region)
|
||||||
|
.status(Status.AVAILABLE)
|
||||||
|
.operatingSystem(
|
||||||
|
OperatingSystem.builder().name("Ubuntu 11.04 64-bit").description("Ubuntu 11.04 64-bit")
|
||||||
|
.is64Bit(true).version("11.04").family(OsFamily.UBUNTU).build()).build()));
|
||||||
|
|
||||||
|
final Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>> ofInstance(ImmutableSet
|
||||||
|
.<Hardware> of(
|
||||||
|
new HardwareBuilder()
|
||||||
|
.ids(String.format("datacenter(%s)platform(%s)cpuCores(%d)memorySizeMB(%d)diskSizeGB(%d)",
|
||||||
|
"Falkenberg", "Xen", 1, 512, 5)).ram(512)
|
||||||
|
.processors(ImmutableList.of(new Processor(1, 1.0)))
|
||||||
|
.volumes(ImmutableList.<Volume> of(new VolumeImpl((float) 5, true, true))).hypervisor("Xen")
|
||||||
|
.location(region)
|
||||||
|
.supportsImage(ImagePredicates.idEquals(image.getId())).build()));
|
||||||
|
|
||||||
|
final Provider<TemplateOptions> optionsProvider = new Provider<TemplateOptions>() {
|
||||||
|
@Override
|
||||||
|
public TemplateOptions get() {
|
||||||
|
return new TemplateOptions();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
final GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
|
expect(getImageStrategy.getImage(image.getId())).andReturn(image);
|
||||||
|
replay(getImageStrategy);
|
||||||
|
|
||||||
|
Provider<TemplateBuilder> templateBuilderProvider = new Provider<TemplateBuilder>() {
|
||||||
|
@Override
|
||||||
|
public TemplateBuilder get() {
|
||||||
|
return createTemplateBuilder(null, locations, images, hardwares, region, optionsProvider, this, getImageStrategy);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Note that the image provided is not in the image list, but it is the one returned by the GetImagestrategy
|
||||||
|
TemplateBuilder templateBuilder = templateBuilderProvider.get().imageId(image.getId());
|
||||||
|
Template template = templateBuilder.build();
|
||||||
|
|
||||||
|
assertEquals(template.getImage().getId(), image.getId());
|
||||||
|
verify(getImageStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -783,13 +840,12 @@ public class TemplateBuilderImplTest {
|
|||||||
Location defaultLocation = createMock(Location.class);
|
Location defaultLocation = createMock(Location.class);
|
||||||
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
Provider<TemplateOptions> optionsProvider = createMock(Provider.class);
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class);
|
||||||
|
GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
replay(defaultLocation);
|
replay(defaultLocation, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
replay(optionsProvider);
|
|
||||||
replay(templateBuilderProvider);
|
|
||||||
|
|
||||||
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, defaultLocation,
|
TemplateBuilderImpl template = createTemplateBuilder(null, locations, images, hardwares, defaultLocation,
|
||||||
optionsProvider, templateBuilderProvider);
|
optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
|
|
||||||
|
|
||||||
template.hypervisorMatches("OpenVZ");
|
template.hypervisorMatches("OpenVZ");
|
||||||
@ -802,14 +858,11 @@ public class TemplateBuilderImplTest {
|
|||||||
assertEquals(template.hypervisor, null);
|
assertEquals(template.hypervisor, null);
|
||||||
|
|
||||||
|
|
||||||
verify(defaultLocation);
|
verify(defaultLocation, optionsProvider, templateBuilderProvider, getImageStrategy);
|
||||||
verify(optionsProvider);
|
|
||||||
verify(templateBuilderProvider);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMatchesHardwareWithIdPredicate() {
|
public void testMatchesHardwareWithIdPredicate() {
|
||||||
|
|
||||||
final Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet
|
final Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet
|
||||||
.<Location> of(region));
|
.<Location> of(region));
|
||||||
final Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet
|
final Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet
|
||||||
@ -858,11 +911,14 @@ public class TemplateBuilderImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
final GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = new Provider<TemplateBuilder>() {
|
Provider<TemplateBuilder> templateBuilderProvider = new Provider<TemplateBuilder>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TemplateBuilder get() {
|
public TemplateBuilder get() {
|
||||||
return createTemplateBuilder(null, locations, images, hardwares, region, optionsProvider, this);
|
return createTemplateBuilder(null, locations, images, hardwares, region, optionsProvider, this, getImageStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -875,13 +931,11 @@ public class TemplateBuilderImplTest {
|
|||||||
Template template = templateBuilder.build();
|
Template template = templateBuilder.build();
|
||||||
assertEquals(template.getHardware().getHypervisor(), "OpenVZ");
|
assertEquals(template.getHardware().getHypervisor(), "OpenVZ");
|
||||||
assertEquals(template.getImage().getId(), "Ubuntu 11.04 64-bit");
|
assertEquals(template.getImage().getId(), "Ubuntu 11.04 64-bit");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testImageLocationNonDefault() {
|
public void testImageLocationNonDefault() {
|
||||||
|
|
||||||
final Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet
|
final Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet
|
||||||
.<Location> of(region));
|
.<Location> of(region));
|
||||||
final Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet
|
final Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet
|
||||||
@ -912,11 +966,14 @@ public class TemplateBuilderImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
final GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = new Provider<TemplateBuilder>() {
|
Provider<TemplateBuilder> templateBuilderProvider = new Provider<TemplateBuilder>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TemplateBuilder get() {
|
public TemplateBuilder get() {
|
||||||
return createTemplateBuilder(null, locations, images, hardwares, region, optionsProvider, this);
|
return createTemplateBuilder(null, locations, images, hardwares, region, optionsProvider, this, getImageStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -927,12 +984,10 @@ public class TemplateBuilderImplTest {
|
|||||||
|
|
||||||
Template template = templateBuilder.build();
|
Template template = templateBuilder.build();
|
||||||
assertEquals(template.getLocation().getId(), "us-east-2");
|
assertEquals(template.getLocation().getId(), "us-east-2");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFromSpecWithLoginUser() {
|
public void testFromSpecWithLoginUser() {
|
||||||
|
|
||||||
final Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet
|
final Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet
|
||||||
.<Location> of(region));
|
.<Location> of(region));
|
||||||
final Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet
|
final Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet
|
||||||
@ -963,11 +1018,14 @@ public class TemplateBuilderImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
final GetImageStrategy getImageStrategy = createMock(GetImageStrategy.class);
|
||||||
|
|
||||||
Provider<TemplateBuilder> templateBuilderProvider = new Provider<TemplateBuilder>() {
|
Provider<TemplateBuilder> templateBuilderProvider = new Provider<TemplateBuilder>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TemplateBuilder get() {
|
public TemplateBuilder get() {
|
||||||
return createTemplateBuilder(null, locations, images, hardwares, region, optionsProvider, this);
|
return createTemplateBuilder(null, locations, images, hardwares, region, optionsProvider, this, getImageStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -27,6 +27,7 @@ import org.jclouds.compute.domain.Hardware;
|
|||||||
import org.jclouds.compute.domain.Image;
|
import org.jclouds.compute.domain.Image;
|
||||||
import org.jclouds.compute.domain.TemplateBuilder;
|
import org.jclouds.compute.domain.TemplateBuilder;
|
||||||
import org.jclouds.compute.options.TemplateOptions;
|
import org.jclouds.compute.options.TemplateOptions;
|
||||||
|
import org.jclouds.compute.strategy.GetImageStrategy;
|
||||||
import org.jclouds.domain.Location;
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.ec2.compute.domain.RegionAndName;
|
import org.jclouds.ec2.compute.domain.RegionAndName;
|
||||||
import org.jclouds.ec2.compute.internal.EC2TemplateBuilderImpl;
|
import org.jclouds.ec2.compute.internal.EC2TemplateBuilderImpl;
|
||||||
@ -44,8 +45,9 @@ public class AWSEC2TemplateBuilderImpl extends EC2TemplateBuilderImpl {
|
|||||||
protected AWSEC2TemplateBuilderImpl(@Memoized Supplier<Set<? extends Location>> locations,
|
protected AWSEC2TemplateBuilderImpl(@Memoized Supplier<Set<? extends Location>> locations,
|
||||||
@Memoized Supplier<Set<? extends Image>> images, @Memoized Supplier<Set<? extends Hardware>> sizes,
|
@Memoized Supplier<Set<? extends Image>> images, @Memoized Supplier<Set<? extends Hardware>> sizes,
|
||||||
Supplier<Location> defaultLocation, @Named("DEFAULT") Provider<TemplateOptions> optionsProvider,
|
Supplier<Location> defaultLocation, @Named("DEFAULT") Provider<TemplateOptions> optionsProvider,
|
||||||
@Named("DEFAULT") Provider<TemplateBuilder> defaultTemplateProvider, Supplier<LoadingCache<RegionAndName, ? extends Image>> imageMap) {
|
@Named("DEFAULT") Provider<TemplateBuilder> defaultTemplateProvider, GetImageStrategy getImageStrategy,
|
||||||
super(locations, images, sizes, defaultLocation, optionsProvider, defaultTemplateProvider, imageMap);
|
Supplier<LoadingCache<RegionAndName, ? extends Image>> imageMap) {
|
||||||
|
super(locations, images, sizes, defaultLocation, optionsProvider, defaultTemplateProvider, getImageStrategy, imageMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user