From 32f0de7997a2401b48a2f52ebe19fbb021ccd604 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Thu, 2 Feb 2012 07:43:51 -0800 Subject: [PATCH] softlayer related changes for Issue 826 --- .../config/SoftLayerComputeServiceContextModule.java | 12 +++++++----- .../compute/functions/DatacenterToLocation.java | 2 +- .../softlayer/config/SoftLayerRestClientModule.java | 10 ++++++++++ .../compute/functions/DatacenterToLocationTest.java | 2 +- .../features/BaseSoftLayerClientLiveTest.java | 8 ++++++-- 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/config/SoftLayerComputeServiceContextModule.java b/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/config/SoftLayerComputeServiceContextModule.java index c6a1354247..31edee90f4 100644 --- a/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/config/SoftLayerComputeServiceContextModule.java +++ b/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/config/SoftLayerComputeServiceContextModule.java @@ -25,6 +25,8 @@ import static org.jclouds.softlayer.predicates.ProductPackagePredicates.named; import static org.jclouds.softlayer.reference.SoftLayerConstants.PROPERTY_SOFTLAYER_VIRTUALGUEST_PACKAGE_NAME; import static org.jclouds.softlayer.reference.SoftLayerConstants.PROPERTY_SOFTLAYER_VIRTUALGUEST_PRICES; +import java.util.concurrent.atomic.AtomicReference; + import javax.inject.Named; import javax.inject.Singleton; @@ -36,7 +38,7 @@ import org.jclouds.compute.domain.OsFamily; import org.jclouds.compute.domain.TemplateBuilder; import org.jclouds.compute.options.TemplateOptions; import org.jclouds.domain.Location; -import org.jclouds.location.suppliers.OnlyLocationOrFirstZone; +import org.jclouds.rest.AuthorizationException; import org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier; import org.jclouds.softlayer.SoftLayerAsyncClient; import org.jclouds.softlayer.SoftLayerClient; @@ -87,9 +89,9 @@ public class SoftLayerComputeServiceContextModule }).to(ProductItemsToHardware.class); bind(new TypeLiteral>() { }).to(DatacenterToLocation.class); - bind(new TypeLiteral>() { - }).to(OnlyLocationOrFirstZone.class); bind(TemplateOptions.class).to(SoftLayerTemplateOptions.class); + // to have the compute service adapter override default locations + install(new LocationsFromComputeServiceAdapterModule, ProductItem, Datacenter>(){}); } protected TemplateBuilder provideTemplate(Injector injector, TemplateBuilder template) { @@ -104,8 +106,8 @@ public class SoftLayerComputeServiceContextModule @Provides @Singleton @Memoized - public Supplier getProductPackage(@Named(PROPERTY_SESSION_INTERVAL) long seconds, - final SoftLayerClient client, + public Supplier getProductPackage(AtomicReference authException, + @Named(PROPERTY_SESSION_INTERVAL) long seconds, final SoftLayerClient client, @Named(PROPERTY_SOFTLAYER_VIRTUALGUEST_PACKAGE_NAME) final String virtualGuestPackageName) { return new MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier(authException, seconds, new Supplier() { diff --git a/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/functions/DatacenterToLocation.java b/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/functions/DatacenterToLocation.java index 556de62e72..c7ee4fbb93 100644 --- a/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/functions/DatacenterToLocation.java +++ b/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/functions/DatacenterToLocation.java @@ -26,7 +26,7 @@ import static com.google.common.base.Strings.nullToEmpty; import org.jclouds.domain.Location; import org.jclouds.domain.LocationBuilder; import org.jclouds.domain.LocationScope; -import org.jclouds.location.suppliers.JustProvider; +import org.jclouds.location.suppliers.all.JustProvider; import org.jclouds.softlayer.domain.Address; import org.jclouds.softlayer.domain.Datacenter; diff --git a/providers/softlayer/src/main/java/org/jclouds/softlayer/config/SoftLayerRestClientModule.java b/providers/softlayer/src/main/java/org/jclouds/softlayer/config/SoftLayerRestClientModule.java index a184d86100..787c74244e 100644 --- a/providers/softlayer/src/main/java/org/jclouds/softlayer/config/SoftLayerRestClientModule.java +++ b/providers/softlayer/src/main/java/org/jclouds/softlayer/config/SoftLayerRestClientModule.java @@ -27,6 +27,9 @@ import org.jclouds.http.annotation.ClientError; import org.jclouds.http.annotation.Redirection; import org.jclouds.http.annotation.ServerError; import org.jclouds.http.handlers.BackoffLimitedRetryHandler; +import org.jclouds.location.config.LocationModule; +import org.jclouds.location.suppliers.ImplicitLocationSupplier; +import org.jclouds.location.suppliers.implicit.OnlyLocationOrFirstZone; import org.jclouds.rest.ConfiguresRestClient; import org.jclouds.rest.config.RestClientModule; import org.jclouds.softlayer.SoftLayerAsyncClient; @@ -42,6 +45,7 @@ import org.jclouds.softlayer.features.VirtualGuestClient; import org.jclouds.softlayer.handlers.SoftLayerErrorHandler; import com.google.common.collect.ImmutableMap; +import com.google.inject.Scopes; /** * Configures the SoftLayer connection. @@ -81,4 +85,10 @@ public class SoftLayerRestClientModule extends RestClientModule getProductPackage(SoftLayerClient client, + public Supplier getProductPackage(AtomicReference authException, + SoftLayerClient client, @Named(PROPERTY_SOFTLAYER_VIRTUALGUEST_PACKAGE_NAME) String virtualGuestPackageName) { - return new SoftLayerComputeServiceContextModule().getProductPackage(30, client, virtualGuestPackageName); + return new SoftLayerComputeServiceContextModule().getProductPackage(authException, 30, client, + virtualGuestPackageName); } @SuppressWarnings("unused")