Repository: jclouds-labs Updated Branches: refs/heads/master 80e5c9116 -> 89cb6f0f7
add support for whitelisting locations - change location scope to ZONE vs REGION - edit the README - fix Region.byName - add more Regions in Region class - address initial comments from @nacx - revert ZONES to REGIONS - add parser module - remove parser from HttpApiModule - use one region in AzureLiveTestUtils Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/89cb6f0f Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/89cb6f0f Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/89cb6f0f Branch: refs/heads/master Commit: 89cb6f0f7dc80ec6e344b88320d8c39e22fc2dd2 Parents: 80e5c91 Author: Andrea Turli <andrea.tu...@gmail.com> Authored: Thu Aug 11 10:52:27 2016 +0200 Committer: Andrea Turli <andrea.tu...@gmail.com> Committed: Tue Sep 20 16:23:58 2016 +0200 ---------------------------------------------------------------------- azurecompute-arm/README.md | 23 +++- .../arm/AzureManagementApiMetadata.java | 12 +- .../arm/compute/AzureComputeServiceAdapter.java | 115 ++++++++++--------- .../compute/functions/LocationToLocation.java | 14 +-- .../arm/config/AzureComputeHttpApiModule.java | 15 +-- .../jclouds/azurecompute/arm/domain/Region.java | 16 ++- .../compute/AzureComputeServiceLiveTest.java | 32 +++--- .../arm/internal/AzureLiveTestUtils.java | 5 +- .../src/test/resources/logback-test.xml | 34 ++++++ azurecompute-arm/src/test/resources/logback.xml | 82 ------------- 10 files changed, 163 insertions(+), 185 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/89cb6f0f/azurecompute-arm/README.md ---------------------------------------------------------------------- diff --git a/azurecompute-arm/README.md b/azurecompute-arm/README.md index c944a8a..b1c0916 100644 --- a/azurecompute-arm/README.md +++ b/azurecompute-arm/README.md @@ -4,8 +4,6 @@ jclouds Labs - Azure Compute ARM Provider Build status for azurecomputearm module: [![Build Status](https://jclouds.ci.cloudbees.com/buildStatus/icon?job=jclouds-labs/org.apache.jclouds.labs$azurecompute-arm)](https://jclouds.ci.cloudbees.com/job/jclouds-labs/org.apache.jclouds.labs$azurecompute-arm/) - - ## Setting Up Test Credentials ### Create a Service Principal @@ -75,3 +73,24 @@ mvn clean verify -Plive \ -Dtest.oauth.endpoint=https://login.microsoftonline.com/<Tenant-id>/oauth2/token ``` + +## How to use it + +Azure Compute ARM provider works exactly as any other jclouds provider. +Notice that as Azure supports dozens of locations, operations like listImages can be really time-consuming. +To limit the scope of such operations there are some additional properties you may want to use: + +```bash +jclouds.azurecompute.arm.publishers +``` +which is by default `Canonical,RedHat` + +and +```bash +jclouds.regions +``` +which is by default `null`. If you want to target only the `north europe` region, you can use + +```bash +jclouds.regions="northeurope" +``` http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/89cb6f0f/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureManagementApiMetadata.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureManagementApiMetadata.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureManagementApiMetadata.java index 989fd84..48dbe69 100644 --- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureManagementApiMetadata.java +++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureManagementApiMetadata.java @@ -16,21 +16,22 @@ */ package org.jclouds.azurecompute.arm; -import static org.jclouds.reflect.Reflection2.typeToken; - import java.net.URI; import java.util.Properties; import org.jclouds.apis.ApiMetadata; +import org.jclouds.azurecompute.arm.compute.config.AzureComputeServiceContextModule; import org.jclouds.azurecompute.arm.config.AzureComputeHttpApiModule; +import org.jclouds.azurecompute.arm.config.AzureComputeParserModule; import org.jclouds.compute.ComputeServiceContext; -import org.jclouds.rest.internal.BaseHttpApiMetadata; +import org.jclouds.http.okhttp.config.OkHttpCommandExecutorServiceModule; import org.jclouds.oauth.v2.config.OAuthModule; -import org.jclouds.azurecompute.arm.compute.config.AzureComputeServiceContextModule; +import org.jclouds.rest.internal.BaseHttpApiMetadata; import com.google.common.collect.ImmutableSet; import com.google.inject.Module; -import org.jclouds.http.okhttp.config.OkHttpCommandExecutorServiceModule; + +import static org.jclouds.reflect.Reflection2.typeToken; /** * Implementation of {@link ApiMetadata} for Microsoft Azure Resource Manager REST API @@ -72,6 +73,7 @@ public class AzureManagementApiMetadata extends BaseHttpApiMetadata<AzureCompute .add(AzureComputeServiceContextModule.class) .add(OAuthModule.class) .add(OkHttpCommandExecutorServiceModule.class) + .add(AzureComputeParserModule.class) .add(AzureComputeHttpApiModule.class).build()); } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/89cb6f0f/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceAdapter.java ---------------------------------------------------------------------- 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 b21dcfc..82b792c 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,14 +16,9 @@ */ package org.jclouds.azurecompute.arm.compute; -import static java.lang.String.format; -import static java.util.concurrent.TimeUnit.SECONDS; -import static org.jclouds.util.Predicates2.retry; import java.util.ArrayList; - import java.util.Arrays; import java.util.Collection; - import java.util.List; import java.util.Map; import java.util.Set; @@ -33,9 +28,6 @@ import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Multimap; -import com.google.common.net.UrlEscapers; import org.jclouds.azurecompute.arm.AzureComputeApi; import org.jclouds.azurecompute.arm.compute.config.AzureComputeServiceContextModule.AzureComputeConstants; import org.jclouds.azurecompute.arm.compute.functions.VMImageToImage; @@ -52,27 +44,38 @@ import org.jclouds.azurecompute.arm.domain.Offer; import org.jclouds.azurecompute.arm.domain.PublicIPAddress; import org.jclouds.azurecompute.arm.domain.SKU; import org.jclouds.azurecompute.arm.domain.VMDeployment; +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.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.azurecompute.arm.functions.CleanupResources; -import org.jclouds.azurecompute.arm.domain.VMSize; -import org.jclouds.azurecompute.arm.domain.Version; +import org.jclouds.providers.ProviderMetadata; +import com.google.common.base.Function; import com.google.common.base.Predicate; +import com.google.common.base.Splitter; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.FluentIterable; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import com.google.common.collect.Multimap; import com.google.common.collect.Sets; -import com.google.common.base.Splitter; +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 @@ -92,9 +95,11 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo private final AzureComputeConstants azureComputeConstants; + private final ProviderMetadata providerMetadata; + @Inject AzureComputeServiceAdapter(final AzureComputeApi api, final AzureComputeConstants azureComputeConstants, - CleanupResources cleanupResources) { + CleanupResources cleanupResources, ProviderMetadata providerMetadata) { this.api = api; this.azureComputeConstants = azureComputeConstants; @@ -103,6 +108,7 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo logger.debug("AzureComputeServiceAdapter set azuregroup to: " + azureGroup); this.cleanupResources = cleanupResources; + this.providerMetadata = providerMetadata; } @Override @@ -207,9 +213,8 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo // } } - private void getImagesFromPublisher(String publisherName, List<VMImage> osImagesRef, String location) { - - + private List<VMImage> getImagesFromPublisher(String publisherName, String location) { + List<VMImage> osImagesRef = Lists.newArrayList(); OSImageApi osImageApi = api.getOSImageApi(location); Iterable<Offer> offerList = osImageApi.listOffers(publisherName); @@ -224,14 +229,14 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo } } } - + return osImagesRef; } private List<VMImage> listImagesByLocation(String location) { final List<VMImage> osImages = Lists.newArrayList(); Iterable<String> publishers = Splitter.on(',').trimResults().omitEmptyStrings().split(this.azureComputeConstants.azureImagePublishers()); for (String publisher : publishers) { - getImagesFromPublisher(publisher, osImages, location); + osImages.addAll(getImagesFromPublisher(publisher, location)); } return osImages; } @@ -240,14 +245,10 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo public Iterable<VMImage> listImages() { final List<VMImage> osImages = Lists.newArrayList(); - final List<String> locationIds = Lists.newArrayList(); for (Location location : listLocations()){ - locationIds.add(location.name()); osImages.addAll(listImagesByLocation(location.name())); } - checkAndSetImageAvailability(osImages, Sets.newHashSet(locationIds)); - // list custom images List<StorageService> storages = api.getStorageAccountApi(azureGroup).list(); for (StorageService storage : storages) { @@ -257,22 +258,9 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo "custom", storage.location()); osImages.addAll(images); } - return osImages; } - private void checkAndSetImageAvailability(List<VMImage> images, Collection<String> locations) { - Multimap<String, String> map = ArrayListMultimap.create(); - - for (VMImage image : images) { - map.put( image.offer() + "/" + image.sku(), image.location()); - } - ///TODO - // for (VMImage image : images) { - // image.globallyAvailable() = map.get(image.offer() + "/" + image.sku()).containsAll(locations); - // } - } - @Override public VMImage getImage(final String id) { VMImage image = VMImageToImage.decodeFieldsFromUniqueId(id); @@ -300,28 +288,43 @@ 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 + public boolean apply(ResourceProviderMetaData input) { + return input.resourceType().equals("virtualMachines"); + } + }) + .transformAndConcat(new Function<ResourceProviderMetaData, Iterable<String>>() { + @Override + public Iterable<String> apply(ResourceProviderMetaData resourceProviderMetaData) { + return resourceProviderMetaData.locations(); + } + }); + + List<Location> locations = FluentIterable.from(api.getLocationApi().list()) + .filter(new Predicate<Location>() { + @Override + public boolean apply(Location location) { + return Iterables.contains(vmLocations, location.displayName()); + } + }) + .filter(new Predicate<Location>() { + @Override + public boolean apply(Location location) { + return whiteListZoneName == null ? true : Iterables.contains(whiteListZoneName, location.name()); + } + }) + .toList(); + + return locations; + } - List<Location> locations = api.getLocationApi().list(); - - List<ResourceProviderMetaData> resources = api.getResourceProviderApi().get("Microsoft.Compute"); - - final List<String> vmLocations = new ArrayList<String>(); - - for (ResourceProviderMetaData m : resources){ - if (m.resourceType().equals("virtualMachines")){ - vmLocations.addAll(m.locations()); - break; - } - } - - Iterable<Location> result = Iterables.filter(locations, new Predicate<Location>() { - @Override - public boolean apply(Location input) { - return vmLocations.contains(input.displayName()); - } - }); - - return result; + 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) { http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/89cb6f0f/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/functions/LocationToLocation.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/functions/LocationToLocation.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/functions/LocationToLocation.java index 0ca1458..7c60175 100644 --- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/functions/LocationToLocation.java +++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/functions/LocationToLocation.java @@ -16,8 +16,6 @@ */ package org.jclouds.azurecompute.arm.compute.functions; -import static com.google.common.collect.Iterables.getOnlyElement; - import javax.inject.Inject; import javax.inject.Singleton; @@ -30,6 +28,8 @@ import org.jclouds.location.suppliers.all.JustProvider; import com.google.common.base.Function; import com.google.common.collect.ImmutableSet; +import static com.google.common.collect.Iterables.getOnlyElement; + /** * Converts an Location into a Location. */ @@ -47,20 +47,14 @@ public class LocationToLocation implements Function<Location, org.jclouds.domain @Override public org.jclouds.domain.Location apply(final Location location) { final LocationBuilder builder = new LocationBuilder(); - String id = location.id(); - int index = id.lastIndexOf('/'); - if (index > 0 && (index + 1) < id.length()) - id = id.substring(index + 1); - builder.id(id); + builder.id(location.name()); builder.description(location.displayName()); builder.parent(getOnlyElement(justProvider.get())); - builder.scope(LocationScope.REGION); - final Region region = Region.byName(location.name()); + final Region region = Region.byName(location.displayName()); if (region != null) { builder.iso3166Codes(ImmutableSet.of(region.iso3166Code())); } - return builder.build(); } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/89cb6f0f/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/config/AzureComputeHttpApiModule.java ---------------------------------------------------------------------- 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 30cbc1e..bd1750f 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 @@ -15,23 +15,22 @@ * limitations under the License. */ package org.jclouds.azurecompute.arm.config; + import org.jclouds.azurecompute.arm.AzureComputeApi; import org.jclouds.azurecompute.arm.handlers.AzureComputeErrorHandler; import org.jclouds.azurecompute.arm.util.DeploymentTemplateBuilder; - import org.jclouds.http.HttpErrorHandler; import org.jclouds.http.annotation.ClientError; import org.jclouds.http.annotation.Redirection; import org.jclouds.http.annotation.ServerError; import org.jclouds.location.suppliers.ImplicitLocationSupplier; -import org.jclouds.location.suppliers.implicit.OnlyLocationOrFirstRegionOptionallyMatchingRegionId; - +import org.jclouds.location.suppliers.implicit.FirstRegion; +import org.jclouds.oauth.v2.config.OAuthScopes; import org.jclouds.rest.ConfiguresHttpApi; import org.jclouds.rest.config.HttpApiModule; -import org.jclouds.oauth.v2.config.OAuthScopes; -import com.google.inject.assistedinject.FactoryModuleBuilder; import com.google.inject.Scopes; +import com.google.inject.assistedinject.FactoryModuleBuilder; @ConfiguresHttpApi public class AzureComputeHttpApiModule extends HttpApiModule<AzureComputeApi> { @@ -46,14 +45,12 @@ public class AzureComputeHttpApiModule extends HttpApiModule<AzureComputeApi> { @Override protected void installLocations() { super.installLocations(); - bind(ImplicitLocationSupplier.class). - to(OnlyLocationOrFirstRegionOptionallyMatchingRegionId.class). - in(Scopes.SINGLETON); + bind(ImplicitLocationSupplier.class).to(FirstRegion.class).in(Scopes.SINGLETON); } + @Override protected void configure() { - install(new AzureComputeParserModule()); install(new FactoryModuleBuilder().build(DeploymentTemplateBuilder.Factory.class)); super.configure(); bind(OAuthScopes.class).toInstance(OAuthScopes.NoScopes.create()); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/89cb6f0f/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Region.java ---------------------------------------------------------------------- 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 feffa7b..a4453f5 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 @@ -16,12 +16,13 @@ */ package org.jclouds.azurecompute.arm.domain; +import java.util.Arrays; +import java.util.Set; + import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; -import java.util.Arrays; -import java.util.Set; /** * Regions used in Azure. @@ -46,7 +47,14 @@ public enum Region { JAPAN_WEST("Japan West", "JP-27"), BRAZIL_SOUTH("Brazil South", "BR"), AUSTRALIA_EAST("Australia East", "AU-NSW"), - AUSTRALIA_SOUTH_EAST("Australia Southeast", "AU-VIC"); + AUSTRALIA_SOUTH_EAST("Australia Southeast", "AU-VIC"), + INDIA_CENTRAL("Central India", "IN-GA"), + INDIA_SOUTH("South India", "IN-TN"), + INDIA_WEST("West India", "IN-MH"), + CHINA_EAST("China East", "CN-SH"), + CHINA_NORTH("China North", "CN-BJ"), + CANADA_CENTRAL("Canada Central", "CA-ON"), + CANADA_EAST("Canada East", "CA-QC"); private final String name; @@ -73,7 +81,6 @@ public enum Region { return region; } } - return null; } @@ -86,4 +93,5 @@ public enum Region { } })); } + } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/89cb6f0f/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceLiveTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceLiveTest.java index b1223e2..b579f6a 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceLiveTest.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceLiveTest.java @@ -16,6 +16,13 @@ */ package org.jclouds.azurecompute.arm.compute; +import java.util.Map; +import java.util.Properties; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; + +import org.jclouds.azurecompute.arm.AzureComputeProviderMetadata; +import org.jclouds.azurecompute.arm.internal.AzureLiveTestUtils; import org.jclouds.compute.RunScriptOnNodesException; import org.jclouds.compute.domain.ExecResponse; import org.jclouds.compute.domain.NodeMetadata; @@ -24,32 +31,25 @@ import org.jclouds.compute.domain.Template; import org.jclouds.compute.internal.BaseComputeServiceLiveTest; import org.jclouds.compute.predicates.NodePredicates; import org.jclouds.domain.LoginCredentials; +import org.jclouds.logging.config.LoggingModule; +import org.jclouds.logging.slf4j.config.SLF4JLoggingModule; +import org.jclouds.providers.ProviderMetadata; import org.jclouds.scriptbuilder.domain.Statement; import org.jclouds.scriptbuilder.domain.Statements; import org.jclouds.scriptbuilder.statements.java.InstallJDK; import org.jclouds.scriptbuilder.statements.login.AdminAccess; import org.jclouds.sshj.config.SshjSshClientModule; import org.testng.annotations.Test; -import org.jclouds.providers.ProviderMetadata; -import org.jclouds.azurecompute.arm.AzureComputeProviderMetadata; -import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.RESOURCE_GROUP_NAME; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_RUNNING; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_SUSPENDED; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_TERMINATED; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_PORT_OPEN; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_SCRIPT_COMPLETE; -import org.jclouds.azurecompute.arm.internal.AzureLiveTestUtils; import com.google.inject.Module; -import java.util.Map; -import java.util.Properties; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; import static com.google.common.base.Preconditions.checkNotNull; -import org.jclouds.logging.slf4j.config.SLF4JLoggingModule; -import org.jclouds.logging.config.LoggingModule; - +import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.RESOURCE_GROUP_NAME; +import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_SCRIPT_COMPLETE; +import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_RUNNING; +import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_PORT_OPEN; +import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_TERMINATED; +import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_SUSPENDED; /** * Live tests for the {@link org.jclouds.compute.ComputeService} integration. http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/89cb6f0f/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AzureLiveTestUtils.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AzureLiveTestUtils.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AzureLiveTestUtils.java index c578e84..3f69e59 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AzureLiveTestUtils.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AzureLiveTestUtils.java @@ -17,8 +17,10 @@ package org.jclouds.azurecompute.arm.internal; import java.util.Properties; -import static org.jclouds.oauth.v2.config.OAuthProperties.CREDENTIAL_TYPE; + +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.CREDENTIAL_TYPE; public class AzureLiveTestUtils { @@ -28,6 +30,7 @@ public class AzureLiveTestUtils { properties.put("oauth.credential", "password"); properties.put("oauth.endpoint", "https://login.microsoftonline.com/oauth2/token"); properties.put(CREDENTIAL_TYPE, CLIENT_CREDENTIALS_SECRET.toString()); + properties.put(PROPERTY_REGIONS, "northeurope"); return properties; } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/89cb6f0f/azurecompute-arm/src/test/resources/logback-test.xml ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/resources/logback-test.xml b/azurecompute-arm/src/test/resources/logback-test.xml new file mode 100644 index 0000000..c823913 --- /dev/null +++ b/azurecompute-arm/src/test/resources/logback-test.xml @@ -0,0 +1,34 @@ +<?xml version="1.0"?> +<!-- + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +--> +<configuration> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>- %msg%n</pattern> + </encoder> + </appender> + <root level="info"> + <appender-ref ref="STDOUT"/> + </root> + <logger name="jclouds.compute" level="debug"/> + <logger name="net.schmizz" level="warn"/> + <logger name="jclouds.wire" level="debug"/> + <logger name="jclouds.headers" level="debug"/> + <logger name="jclouds.ssh" level="debug"/> +</configuration> http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/89cb6f0f/azurecompute-arm/src/test/resources/logback.xml ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/resources/logback.xml b/azurecompute-arm/src/test/resources/logback.xml deleted file mode 100644 index 412e0e2..0000000 --- a/azurecompute-arm/src/test/resources/logback.xml +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0"?> -<!-- - - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - ---> -<configuration scan="false"> - <appender name="FILE" class="ch.qos.logback.core.FileAppender"> - <file>target/test-data/jclouds.log</file> - - <encoder> - <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> - </encoder> - </appender> - - <appender name="WIREFILE" class="ch.qos.logback.core.FileAppender"> - <file>target/test-data/jclouds-wire.log</file> - - <encoder> - <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> - </encoder> - </appender> - - <appender name="COMPUTEFILE" class="ch.qos.logback.core.FileAppender"> - <file>target/test-data/jclouds-compute.log</file> - - <encoder> - <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> - </encoder> - </appender> - - <appender name="SSHFILE" class="ch.qos.logback.core.FileAppender"> - <file>target/test-data/jclouds-ssh.log</file> - - <encoder> - <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> - </encoder> - </appender> - - <root> - <level value="warn" /> - </root> - - <logger name="org.jclouds"> - <level value="TRACE" /> - <appender-ref ref="FILE" /> - </logger> - - <logger name="jclouds.wire"> - <level value="DEBUG" /> - <appender-ref ref="WIREFILE" /> - </logger> - - <logger name="jclouds.headers"> - <level value="DEBUG" /> - <appender-ref ref="WIREFILE" /> - </logger> - - <logger name="jclouds.compute"> - <level value="TRACE" /> - <appender-ref ref="COMPUTEFILE" /> - </logger> - - <logger name="jclouds.ssh"> - <level value="TRACE" /> - <appender-ref ref="SSHFILE" /> - </logger> - -</configuration>