Last active
September 20, 2016 10:28
-
-
Save nacx/3d16f26e3db8a329dd5f737e80b46f74 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeProviderMetadata.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeProviderMetadata.java | |
index 460df67..5c5a6ae 100644 | |
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeProviderMetadata.java | |
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeProviderMetadata.java | |
@@ -17,31 +17,30 @@ | |
package org.jclouds.azurecompute.arm; | |
+import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.DEFAULT_DATADISKSIZE; | |
+import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.DEFAULT_IMAGE_LOGIN; | |
+import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.DEFAULT_SUBNET_ADDRESS_PREFIX; | |
+import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.DEFAULT_VNET_ADDRESS_SPACE_PREFIX; | |
import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.IMAGE_PUBLISHERS; | |
-import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.RESOURCE_GROUP_NAME; | |
-import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.OPERATION_TIMEOUT; | |
import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.OPERATION_POLL_INITIAL_PERIOD; | |
import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.OPERATION_POLL_MAX_PERIOD; | |
+import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.OPERATION_TIMEOUT; | |
+import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.RESOURCE_GROUP_NAME; | |
import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.TCP_RULE_FORMAT; | |
import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.TCP_RULE_REGEXP; | |
-import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.DEFAULT_VNET_ADDRESS_SPACE_PREFIX; | |
-import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.DEFAULT_SUBNET_ADDRESS_PREFIX; | |
-import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.DEFAULT_DATADISKSIZE; | |
- | |
-import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.DEFAULT_IMAGE_LOGIN; | |
- | |
+import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_TERMINATED; | |
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGIONS; | |
import static org.jclouds.oauth.v2.config.CredentialType.CLIENT_CREDENTIALS_SECRET; | |
-import static org.jclouds.oauth.v2.config.OAuthProperties.RESOURCE; | |
import static org.jclouds.oauth.v2.config.OAuthProperties.CREDENTIAL_TYPE; | |
+import static org.jclouds.oauth.v2.config.OAuthProperties.RESOURCE; | |
import java.net.URI; | |
import java.util.Properties; | |
+ | |
import org.jclouds.azurecompute.arm.domain.Region; | |
+import org.jclouds.compute.config.ComputeServiceProperties; | |
import org.jclouds.providers.ProviderMetadata; | |
import org.jclouds.providers.internal.BaseProviderMetadata; | |
-import org.jclouds.compute.config.ComputeServiceProperties; | |
- | |
-import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_TERMINATED; | |
import com.google.auto.service.AutoService; | |
@@ -79,6 +78,7 @@ public class AzureComputeProviderMetadata extends BaseProviderMetadata { | |
properties.put(IMAGE_PUBLISHERS, "Canonical,RedHat"); | |
properties.put(DEFAULT_IMAGE_LOGIN, "jclouds:Password1!"); | |
properties.put(TIMEOUT_NODE_TERMINATED, 60 * 10 * 1000); | |
+ properties.put(PROPERTY_REGIONS, Region.locationIds()); | |
return properties; | |
} | |
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceAdapter.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceAdapter.java | |
index 82b792c..9d8c006 100644 | |
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceAdapter.java | |
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceAdapter.java | |
@@ -16,6 +16,12 @@ | |
*/ | |
package org.jclouds.azurecompute.arm.compute; | |
+import static com.google.common.base.Preconditions.checkState; | |
+import static java.lang.String.format; | |
+import static java.util.concurrent.TimeUnit.SECONDS; | |
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGIONS; | |
+import static org.jclouds.util.Predicates2.retry; | |
+ | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.Collection; | |
@@ -34,32 +40,30 @@ import org.jclouds.azurecompute.arm.compute.functions.VMImageToImage; | |
import org.jclouds.azurecompute.arm.domain.Deployment; | |
import org.jclouds.azurecompute.arm.domain.DeploymentBody; | |
import org.jclouds.azurecompute.arm.domain.DeploymentProperties; | |
-import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCard; | |
-import org.jclouds.azurecompute.arm.domain.ResourceProviderMetaData; | |
-import org.jclouds.azurecompute.arm.domain.StorageService; | |
-import org.jclouds.azurecompute.arm.domain.VMImage; | |
-import org.jclouds.azurecompute.arm.domain.VMHardware; | |
import org.jclouds.azurecompute.arm.domain.Location; | |
+import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCard; | |
import org.jclouds.azurecompute.arm.domain.Offer; | |
import org.jclouds.azurecompute.arm.domain.PublicIPAddress; | |
+import org.jclouds.azurecompute.arm.domain.ResourceProviderMetaData; | |
import org.jclouds.azurecompute.arm.domain.SKU; | |
+import org.jclouds.azurecompute.arm.domain.StorageService; | |
import org.jclouds.azurecompute.arm.domain.VMDeployment; | |
+import org.jclouds.azurecompute.arm.domain.VMHardware; | |
+import org.jclouds.azurecompute.arm.domain.VMImage; | |
import org.jclouds.azurecompute.arm.domain.VMSize; | |
import org.jclouds.azurecompute.arm.domain.Version; | |
import org.jclouds.azurecompute.arm.domain.VirtualMachine; | |
import org.jclouds.azurecompute.arm.domain.VirtualMachineInstance; | |
import org.jclouds.azurecompute.arm.features.DeploymentApi; | |
import org.jclouds.azurecompute.arm.features.OSImageApi; | |
-import org.jclouds.azurecompute.arm.util.BlobHelper; | |
import org.jclouds.azurecompute.arm.functions.CleanupResources; | |
+import org.jclouds.azurecompute.arm.util.BlobHelper; | |
import org.jclouds.azurecompute.arm.util.DeploymentTemplateBuilder; | |
import org.jclouds.compute.ComputeServiceAdapter; | |
import org.jclouds.compute.domain.Template; | |
import org.jclouds.compute.reference.ComputeServiceConstants; | |
import org.jclouds.domain.LoginCredentials; | |
-import org.jclouds.location.reference.LocationConstants; | |
import org.jclouds.logging.Logger; | |
-import org.jclouds.providers.ProviderMetadata; | |
import com.google.common.base.Function; | |
import com.google.common.base.Predicate; | |
@@ -72,11 +76,6 @@ import com.google.common.collect.Multimap; | |
import com.google.common.collect.Sets; | |
import com.google.common.net.UrlEscapers; | |
-import static com.google.common.base.Preconditions.checkState; | |
-import static java.lang.String.format; | |
-import static java.util.concurrent.TimeUnit.SECONDS; | |
-import static org.jclouds.util.Predicates2.retry; | |
- | |
/** | |
* Defines the connection between the {@link AzureComputeApi} implementation and the jclouds | |
* {@link org.jclouds.compute.ComputeService}. | |
@@ -95,11 +94,11 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo | |
private final AzureComputeConstants azureComputeConstants; | |
- private final ProviderMetadata providerMetadata; | |
+ private final List<String> whitelistedRegions; | |
@Inject | |
AzureComputeServiceAdapter(final AzureComputeApi api, final AzureComputeConstants azureComputeConstants, | |
- CleanupResources cleanupResources, ProviderMetadata providerMetadata) { | |
+ CleanupResources cleanupResources, @Named(PROPERTY_REGIONS) String regions) { | |
this.api = api; | |
this.azureComputeConstants = azureComputeConstants; | |
@@ -108,7 +107,7 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo | |
logger.debug("AzureComputeServiceAdapter set azuregroup to: " + azureGroup); | |
this.cleanupResources = cleanupResources; | |
- this.providerMetadata = providerMetadata; | |
+ this.whitelistedRegions = Splitter.on(',').trimResults().omitEmptyStrings().splitToList(regions); | |
} | |
@Override | |
@@ -288,8 +287,6 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo | |
@Override | |
public Iterable<Location> listLocations() { | |
- final Iterable<String> whiteListZoneName = findWhiteListOfRegions(); | |
- | |
final Iterable<String> vmLocations = FluentIterable.from(api.getResourceProviderApi().get("Microsoft.Compute")) | |
.filter(new Predicate<ResourceProviderMetaData>() { | |
@Override | |
@@ -314,7 +311,7 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo | |
.filter(new Predicate<Location>() { | |
@Override | |
public boolean apply(Location location) { | |
- return whiteListZoneName == null ? true : Iterables.contains(whiteListZoneName, location.name()); | |
+ return whitelistedRegions.isEmpty() ? true : Iterables.contains(whitelistedRegions, location.name()); | |
} | |
}) | |
.toList(); | |
@@ -322,11 +319,6 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo | |
return locations; | |
} | |
- private Iterable<String> findWhiteListOfRegions() { | |
- if (providerMetadata.getDefaultProperties().get(LocationConstants.PROPERTY_REGIONS) == null) return null; | |
- return Splitter.on(",").trimResults().split((CharSequence) providerMetadata.getDefaultProperties().get(LocationConstants.PROPERTY_REGIONS)); | |
- } | |
- | |
private String getResourceGroupFromId(String id) { | |
String searchStr = "/resourceGroups/"; | |
int indexStart = id.lastIndexOf(searchStr) + searchStr.length(); | |
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/config/AzureComputeHttpApiModule.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/config/AzureComputeHttpApiModule.java | |
index ab37962..014cde5 100644 | |
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/config/AzureComputeHttpApiModule.java | |
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/config/AzureComputeHttpApiModule.java | |
@@ -51,9 +51,9 @@ public class AzureComputeHttpApiModule extends HttpApiModule<AzureComputeApi> { | |
@Override | |
protected void configure() { | |
+ super.configure(); | |
install(new AzureComputeParserModule()); | |
install(new FactoryModuleBuilder().build(DeploymentTemplateBuilder.Factory.class)); | |
- super.configure(); | |
bind(OAuthScopes.class).toInstance(OAuthScopes.NoScopes.create()); | |
} | |
} | |
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Region.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Region.java | |
index a4453f5..8df80b3 100644 | |
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Region.java | |
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Region.java | |
@@ -19,6 +19,7 @@ package org.jclouds.azurecompute.arm.domain; | |
import java.util.Arrays; | |
import java.util.Set; | |
+import com.google.common.base.CaseFormat; | |
import com.google.common.base.Function; | |
import com.google.common.base.Preconditions; | |
import com.google.common.collect.ImmutableSet; | |
@@ -72,6 +73,10 @@ public enum Region { | |
public String iso3166Code() { | |
return iso3166Code; | |
} | |
+ | |
+ public String locationId() { | |
+ return name.replaceAll("\\s", "").toLowerCase(); | |
+ } | |
public static Region byName(final String name) { | |
Preconditions.checkNotNull(name); | |
@@ -93,5 +98,15 @@ public enum Region { | |
} | |
})); | |
} | |
+ | |
+ public static Set<String> locationIds() { | |
+ return ImmutableSet.copyOf(Iterables.transform(Arrays.asList(values()), new Function<Region, String>() { | |
+ | |
+ @Override | |
+ public String apply(final Region region) { | |
+ return region.locationId(); | |
+ } | |
+ })); | |
+ } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment