From c132974ee338928afc3504b6a64f122986690587 Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Mon, 3 Oct 2016 16:54:55 -0700 Subject: [PATCH 1/2] Fix access to environments outside AzureCloud --- .../batch/implementation/BatchManager.java | 11 +++--- .../implementation/ComputeManager.java | 13 ++++--- .../implementation/GraphRbacManager.java | 36 +++---------------- .../implementation/KeyVaultManager.java | 21 ++++++----- .../implementation/NetworkManager.java | 15 ++++---- .../redis/implementation/RedisManager.java | 11 +++--- .../resources/fluentcore/arm/Region.java | 7 ++-- .../implementation/AzureConfigurableImpl.java | 28 +++++++++++++-- .../implementation/ResourceManager.java | 13 ++++--- .../management/resources/ProvidersTests.java | 3 +- .../resources/ResourceManagerTestBase.java | 3 +- .../resources/SubscriptionsTests.java | 3 +- .../management/resources/TenantsTests.java | 3 +- .../implementation/StorageManager.java | 11 +++--- .../samples/ManageNetworkSecurityGroup.java | 14 ++++---- .../com/microsoft/azure/management/Azure.java | 34 ++---------------- 16 files changed, 97 insertions(+), 129 deletions(-) diff --git a/azure-mgmt-batch/src/main/java/com/microsoft/azure/management/batch/implementation/BatchManager.java b/azure-mgmt-batch/src/main/java/com/microsoft/azure/management/batch/implementation/BatchManager.java index 1a5628ab7a48..6dbddae6b5ea 100644 --- a/azure-mgmt-batch/src/main/java/com/microsoft/azure/management/batch/implementation/BatchManager.java +++ b/azure-mgmt-batch/src/main/java/com/microsoft/azure/management/batch/implementation/BatchManager.java @@ -1,13 +1,12 @@ package com.microsoft.azure.management.batch.implementation; -import com.microsoft.azure.AzureEnvironment; import com.microsoft.azure.RestClient; +import com.microsoft.azure.credentials.AzureTokenCredentials; import com.microsoft.azure.management.batch.BatchAccounts; import com.microsoft.azure.management.resources.fluentcore.arm.AzureConfigurable; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.AzureConfigurableImpl; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.Manager; import com.microsoft.azure.management.storage.implementation.StorageManager; -import com.microsoft.rest.credentials.ServiceClientCredentials; /** * Entry point to Azure Batch Account resource management. @@ -42,8 +41,8 @@ public static Configurable configure() { * @param subscriptionId the subscription * @return the BatchManager */ - public static BatchManager authenticate(ServiceClientCredentials credentials, String subscriptionId) { - return new BatchManager(AzureEnvironment.AZURE.newRestClientBuilder() + public static BatchManager authenticate(AzureTokenCredentials credentials, String subscriptionId) { + return new BatchManager(credentials.getEnvironment().newRestClientBuilder() .withCredentials(credentials) .build(), subscriptionId); } @@ -70,7 +69,7 @@ public interface Configurable extends AzureConfigurable { * @param subscriptionId the subscription * @return the BatchManager */ - BatchManager authenticate(ServiceClientCredentials credentials, String subscriptionId); + BatchManager authenticate(AzureTokenCredentials credentials, String subscriptionId); } /** @@ -78,7 +77,7 @@ public interface Configurable extends AzureConfigurable { */ private static final class ConfigurableImpl extends AzureConfigurableImpl implements Configurable { @Override - public BatchManager authenticate(ServiceClientCredentials credentials, String subscriptionId) { + public BatchManager authenticate(AzureTokenCredentials credentials, String subscriptionId) { return BatchManager.authenticate(buildRestClient(credentials), subscriptionId); } } diff --git a/azure-mgmt-compute/src/main/java/com/microsoft/azure/management/compute/implementation/ComputeManager.java b/azure-mgmt-compute/src/main/java/com/microsoft/azure/management/compute/implementation/ComputeManager.java index e48c6854dc8b..ed7e18586ff3 100644 --- a/azure-mgmt-compute/src/main/java/com/microsoft/azure/management/compute/implementation/ComputeManager.java +++ b/azure-mgmt-compute/src/main/java/com/microsoft/azure/management/compute/implementation/ComputeManager.java @@ -1,6 +1,7 @@ package com.microsoft.azure.management.compute.implementation; -import com.microsoft.azure.AzureEnvironment; +import com.microsoft.azure.RestClient; +import com.microsoft.azure.credentials.AzureTokenCredentials; import com.microsoft.azure.management.compute.AvailabilitySets; import com.microsoft.azure.management.compute.VirtualMachineExtensionImages; import com.microsoft.azure.management.compute.VirtualMachineImages; @@ -11,8 +12,6 @@ import com.microsoft.azure.management.resources.fluentcore.arm.implementation.AzureConfigurableImpl; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.Manager; import com.microsoft.azure.management.storage.implementation.StorageManager; -import com.microsoft.azure.RestClient; -import com.microsoft.rest.credentials.ServiceClientCredentials; /** * Entry point to Azure compute resource management. @@ -44,8 +43,8 @@ public static Configurable configure() { * @param subscriptionId the subscription * @return the ComputeManager */ - public static ComputeManager authenticate(ServiceClientCredentials credentials, String subscriptionId) { - return new ComputeManager(AzureEnvironment.AZURE.newRestClientBuilder() + public static ComputeManager authenticate(AzureTokenCredentials credentials, String subscriptionId) { + return new ComputeManager(credentials.getEnvironment().newRestClientBuilder() .withCredentials(credentials) .build(), subscriptionId); } @@ -72,7 +71,7 @@ public interface Configurable extends AzureConfigurable { * @param subscriptionId the subscription * @return the ComputeManager */ - ComputeManager authenticate(ServiceClientCredentials credentials, String subscriptionId); + ComputeManager authenticate(AzureTokenCredentials credentials, String subscriptionId); } /** @@ -80,7 +79,7 @@ public interface Configurable extends AzureConfigurable { */ private static final class ConfigurableImpl extends AzureConfigurableImpl implements Configurable { @Override - public ComputeManager authenticate(ServiceClientCredentials credentials, String subscriptionId) { + public ComputeManager authenticate(AzureTokenCredentials credentials, String subscriptionId) { return ComputeManager.authenticate(buildRestClient(credentials), subscriptionId); } } diff --git a/azure-mgmt-graph-rbac/src/main/java/com/microsoft/azure/management/graphrbac/implementation/GraphRbacManager.java b/azure-mgmt-graph-rbac/src/main/java/com/microsoft/azure/management/graphrbac/implementation/GraphRbacManager.java index a4442db6c613..93dad05aca0d 100644 --- a/azure-mgmt-graph-rbac/src/main/java/com/microsoft/azure/management/graphrbac/implementation/GraphRbacManager.java +++ b/azure-mgmt-graph-rbac/src/main/java/com/microsoft/azure/management/graphrbac/implementation/GraphRbacManager.java @@ -6,6 +6,7 @@ package com.microsoft.azure.management.graphrbac.implementation; +import com.microsoft.azure.AzureEnvironment; import com.microsoft.azure.RequestIdHeaderInterceptor; import com.microsoft.azure.RestClient; import com.microsoft.azure.credentials.AzureTokenCredentials; @@ -13,7 +14,6 @@ import com.microsoft.azure.management.graphrbac.Users; import com.microsoft.azure.management.resources.fluentcore.arm.AzureConfigurable; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.AzureConfigurableImpl; -import com.microsoft.rest.credentials.ServiceClientCredentials; /** * Entry point to Azure resource management. @@ -26,21 +26,6 @@ public final class GraphRbacManager { private Users users; private ServicePrincipals servicePrincipals; - /** - * Creates an instance of GraphRbacManager that exposes resource management API entry points. - * - * @param credentials the credentials to use - * @param tenantId the tenantId in Active Directory - * @return the GraphRbacManager instance - */ - public static GraphRbacManager authenticate(ServiceClientCredentials credentials, String tenantId) { - return new GraphRbacManager(new RestClient.Builder() - .withBaseUrl("https://graph.windows.net") - .withInterceptor(new RequestIdHeaderInterceptor()) - .withCredentials(credentials) - .build(), tenantId); - } - /** * Creates an instance of GraphRbacManager that exposes resource management API entry points. * @@ -49,7 +34,7 @@ public static GraphRbacManager authenticate(ServiceClientCredentials credentials */ public static GraphRbacManager authenticate(AzureTokenCredentials credentials) { return new GraphRbacManager(new RestClient.Builder() - .withBaseUrl("https://graph.windows.net") + .withBaseUrl(credentials.getEnvironment().getGraphEndpoint()) .withInterceptor(new RequestIdHeaderInterceptor()) .withCredentials(credentials) .build(), credentials.getDomain()); @@ -79,15 +64,6 @@ public static Configurable configure() { * The interface allowing configurations to be set. */ public interface Configurable extends AzureConfigurable { - /** - * Creates an instance of GraphRbacManager that exposes resource management API entry points. - * - * @param credentials the credentials to use - * @param tenantId the tenantId in Active Directory - * @return the interface exposing resource management API entry points that work across subscriptions - */ - GraphRbacManager authenticate(ServiceClientCredentials credentials, String tenantId); - /** * Creates an instance of GraphRbacManager that exposes resource management API entry points. * @@ -103,16 +79,12 @@ public interface Configurable extends AzureConfigurable { private static class ConfigurableImpl extends AzureConfigurableImpl implements Configurable { protected ConfigurableImpl() { super.restClientBuilder = new RestClient.Builder() - .withBaseUrl("https://graph.windows.net") + .withBaseUrl(AzureEnvironment.AZURE.getGraphEndpoint()) // default to public cloud .withInterceptor(new RequestIdHeaderInterceptor()); } - public GraphRbacManager authenticate(ServiceClientCredentials credentials, String tenantId) { - return GraphRbacManager.authenticate(buildRestClient(credentials), tenantId); - } - public GraphRbacManager authenticate(AzureTokenCredentials credentials) { - return GraphRbacManager.authenticate(buildRestClient(credentials), credentials.getDomain()); + return GraphRbacManager.authenticate(buildRestClientForGraph(credentials), credentials.getDomain()); } } diff --git a/azure-mgmt-keyvault/src/main/java/com/microsoft/azure/management/keyvault/implementation/KeyVaultManager.java b/azure-mgmt-keyvault/src/main/java/com/microsoft/azure/management/keyvault/implementation/KeyVaultManager.java index d482876a88e3..a1929e53cbbb 100644 --- a/azure-mgmt-keyvault/src/main/java/com/microsoft/azure/management/keyvault/implementation/KeyVaultManager.java +++ b/azure-mgmt-keyvault/src/main/java/com/microsoft/azure/management/keyvault/implementation/KeyVaultManager.java @@ -9,12 +9,12 @@ import com.microsoft.azure.AzureEnvironment; import com.microsoft.azure.RequestIdHeaderInterceptor; import com.microsoft.azure.RestClient; +import com.microsoft.azure.credentials.AzureTokenCredentials; import com.microsoft.azure.management.graphrbac.implementation.GraphRbacManager; import com.microsoft.azure.management.keyvault.Vaults; import com.microsoft.azure.management.resources.fluentcore.arm.AzureConfigurable; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.AzureConfigurableImpl; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.Manager; -import com.microsoft.rest.credentials.ServiceClientCredentials; /** * Entry point to Azure storage resource management. @@ -40,14 +40,13 @@ public static Configurable configure() { * Creates an instance of StorageManager that exposes storage resource management API entry points. * * @param credentials the credentials to use - * @param tenantId the tenant UUID * @param subscriptionId the subscription UUID * @return the StorageManager */ - public static KeyVaultManager authenticate(ServiceClientCredentials credentials, String tenantId, String subscriptionId) { - return new KeyVaultManager(AzureEnvironment.AZURE.newRestClientBuilder() + public static KeyVaultManager authenticate(AzureTokenCredentials credentials, String subscriptionId) { + return new KeyVaultManager(credentials.getEnvironment().newRestClientBuilder() .withCredentials(credentials) - .build(), tenantId, subscriptionId); + .build(), credentials.getDomain(), subscriptionId); } /** @@ -74,25 +73,29 @@ public interface Configurable extends AzureConfigurable { * @param subscriptionId the subscription UUID * @return the interface exposing storage management API entry points that work across subscriptions */ - KeyVaultManager authenticate(ServiceClientCredentials credentials, String tenantId, String subscriptionId); + KeyVaultManager authenticate(AzureTokenCredentials credentials, String tenantId, String subscriptionId); } /** * The implementation for Configurable interface. */ private static final class ConfigurableImpl extends AzureConfigurableImpl implements Configurable { - public KeyVaultManager authenticate(ServiceClientCredentials credentials, String tenantId, String subscriptionId) { + public KeyVaultManager authenticate(AzureTokenCredentials credentials, String tenantId, String subscriptionId) { return KeyVaultManager.authenticate(buildRestClient(credentials), tenantId, subscriptionId); } } - private KeyVaultManager(RestClient restClient, String tenantId, String subscriptionId) { + private KeyVaultManager(final RestClient restClient, String tenantId, String subscriptionId) { super( restClient, subscriptionId, new KeyVaultManagementClientImpl(restClient).withSubscriptionId(subscriptionId)); + String graphEndpoint = AzureEnvironment.AZURE.getGraphEndpoint(); + if (restClient.credentials() instanceof AzureTokenCredentials) { + graphEndpoint = ((AzureTokenCredentials) restClient.credentials()).getEnvironment().getGraphEndpoint(); + } graphRbacManager = GraphRbacManager.authenticate(new RestClient.Builder() - .withBaseUrl("https://graph.windows.net") + .withBaseUrl(graphEndpoint) .withInterceptor(new RequestIdHeaderInterceptor()) .withCredentials(restClient.credentials()) .build(), tenantId); diff --git a/azure-mgmt-network/src/main/java/com/microsoft/azure/management/network/implementation/NetworkManager.java b/azure-mgmt-network/src/main/java/com/microsoft/azure/management/network/implementation/NetworkManager.java index 0d5fd594caf1..c8d36aa2b6f0 100644 --- a/azure-mgmt-network/src/main/java/com/microsoft/azure/management/network/implementation/NetworkManager.java +++ b/azure-mgmt-network/src/main/java/com/microsoft/azure/management/network/implementation/NetworkManager.java @@ -5,17 +5,16 @@ */ package com.microsoft.azure.management.network.implementation; -import com.microsoft.azure.AzureEnvironment; -import com.microsoft.azure.management.network.NetworkSecurityGroups; +import com.microsoft.azure.RestClient; +import com.microsoft.azure.credentials.AzureTokenCredentials; import com.microsoft.azure.management.network.LoadBalancers; import com.microsoft.azure.management.network.NetworkInterfaces; +import com.microsoft.azure.management.network.NetworkSecurityGroups; import com.microsoft.azure.management.network.Networks; import com.microsoft.azure.management.network.PublicIpAddresses; import com.microsoft.azure.management.resources.fluentcore.arm.AzureConfigurable; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.AzureConfigurableImpl; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.Manager; -import com.microsoft.azure.RestClient; -import com.microsoft.rest.credentials.ServiceClientCredentials; /** * Entry point to Azure network management. @@ -46,8 +45,8 @@ public static Configurable configure() { * @param subscriptionId the subscription UUID * @return the NetworkManager */ - public static NetworkManager authenticate(ServiceClientCredentials credentials, String subscriptionId) { - return new NetworkManager(AzureEnvironment.AZURE.newRestClientBuilder() + public static NetworkManager authenticate(AzureTokenCredentials credentials, String subscriptionId) { + return new NetworkManager(credentials.getEnvironment().newRestClientBuilder() .withCredentials(credentials) .build(), subscriptionId); } @@ -74,7 +73,7 @@ public interface Configurable extends AzureConfigurable { * @param subscriptionId the subscription UUID * @return the interface exposing network management API entry points that work across subscriptions */ - NetworkManager authenticate(ServiceClientCredentials credentials, String subscriptionId); + NetworkManager authenticate(AzureTokenCredentials credentials, String subscriptionId); } /** @@ -84,7 +83,7 @@ private static class ConfigurableImpl extends AzureConfigurableImpl implements Configurable { - public NetworkManager authenticate(ServiceClientCredentials credentials, String subscriptionId) { + public NetworkManager authenticate(AzureTokenCredentials credentials, String subscriptionId) { return NetworkManager.authenticate(buildRestClient(credentials), subscriptionId); } } diff --git a/azure-mgmt-redis/src/main/java/com/microsoft/azure/management/redis/implementation/RedisManager.java b/azure-mgmt-redis/src/main/java/com/microsoft/azure/management/redis/implementation/RedisManager.java index 9dcf034d01c1..952f8168f2e0 100644 --- a/azure-mgmt-redis/src/main/java/com/microsoft/azure/management/redis/implementation/RedisManager.java +++ b/azure-mgmt-redis/src/main/java/com/microsoft/azure/management/redis/implementation/RedisManager.java @@ -6,13 +6,12 @@ package com.microsoft.azure.management.redis.implementation; -import com.microsoft.azure.AzureEnvironment; import com.microsoft.azure.RestClient; +import com.microsoft.azure.credentials.AzureTokenCredentials; import com.microsoft.azure.management.redis.RedisCaches; import com.microsoft.azure.management.resources.fluentcore.arm.AzureConfigurable; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.AzureConfigurableImpl; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.Manager; -import com.microsoft.rest.credentials.ServiceClientCredentials; /** * Entry point to Azure redis resource management. @@ -44,8 +43,8 @@ public static Configurable configure() { * @param subscriptionId the subscription UUID * @return the RedisManager */ - public static RedisManager authenticate(ServiceClientCredentials credentials, String subscriptionId) { - return new RedisManager(AzureEnvironment.AZURE.newRestClientBuilder() + public static RedisManager authenticate(AzureTokenCredentials credentials, String subscriptionId) { + return new RedisManager(credentials.getEnvironment().newRestClientBuilder() .withCredentials(credentials) .build(), subscriptionId); } @@ -85,14 +84,14 @@ public interface Configurable extends AzureConfigurable { * @param subscriptionId the subscription UUID * @return the interface exposing Redis management API entry points that work across subscriptions */ - RedisManager authenticate(ServiceClientCredentials credentials, String subscriptionId); + RedisManager authenticate(AzureTokenCredentials credentials, String subscriptionId); } /** * The implementation for Configurable interface. */ private static final class ConfigurableImpl extends AzureConfigurableImpl implements Configurable { - public RedisManager authenticate(ServiceClientCredentials credentials, String subscriptionId) { + public RedisManager authenticate(AzureTokenCredentials credentials, String subscriptionId) { return RedisManager.authenticate(buildRestClient(credentials), subscriptionId); } } diff --git a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/Region.java b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/Region.java index 39a8a687b945..04c373f499da 100644 --- a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/Region.java +++ b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/Region.java @@ -10,8 +10,9 @@ * Enumeration of the Azure datacenter regions. See https://azure.microsoft.com/regions/ */ public enum Region { - // CHECKSTYLE IGNORE Javadoc FOR NEXT 18 LINES + // CHECKSTYLE IGNORE Javadoc FOR NEXT 21 LINES US_WEST("westus", "West US"), + US_WEST2("westus2", "West US 2"), US_CENTRAL("centralus", "Central US"), US_EAST("eastus", "East US"), US_EAST2("eastus2", "East US 2"), @@ -28,7 +29,9 @@ public enum Region { AUSTRALIA_SOUTHEAST("australiasoutheast", "Australia Southeast"), INDIA_CENTRAL("centralindia", "Central India"), INDIA_SOUTH("southindia", "South India"), - INDIA_WEST("westindia", "West India"); + INDIA_WEST("westindia", "West India"), + CHINA_NORTH("chinanorth", "China North"), + CHINA_EAST("chinaeast", "China East"); private final String name; private final String label; diff --git a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/implementation/AzureConfigurableImpl.java b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/implementation/AzureConfigurableImpl.java index a18696ddb4b1..7f886dad47d0 100644 --- a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/implementation/AzureConfigurableImpl.java +++ b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/fluentcore/arm/implementation/AzureConfigurableImpl.java @@ -8,11 +8,12 @@ import com.microsoft.azure.AzureEnvironment; import com.microsoft.azure.RestClient; +import com.microsoft.azure.credentials.AzureTokenCredentials; import com.microsoft.azure.management.resources.fluentcore.arm.AzureConfigurable; -import com.microsoft.rest.credentials.ServiceClientCredentials; import okhttp3.Interceptor; import okhttp3.logging.HttpLoggingInterceptor; +import java.lang.reflect.Field; import java.net.Proxy; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; @@ -28,7 +29,7 @@ public class AzureConfigurableImpl> protected RestClient.Builder.Buildable restClientBuilder; protected AzureConfigurableImpl() { - this.restClientBuilder = AzureEnvironment.AZURE.newRestClientBuilder(); + this.restClientBuilder = AzureEnvironment.AZURE.newRestClientBuilder(); // default to public cloud } @SuppressWarnings("unchecked") @@ -87,7 +88,28 @@ public T withProxy(Proxy proxy) { return (T) this; } - protected RestClient buildRestClient(ServiceClientCredentials credentials) { + protected RestClient buildRestClient(AzureTokenCredentials credentials) { + restClientBuilder = modifyBaseUrl(restClientBuilder, credentials.getEnvironment().getBaseUrl()); return restClientBuilder.withCredentials(credentials).build(); } + + protected RestClient buildRestClientForGraph(AzureTokenCredentials credentials) { + restClientBuilder = modifyBaseUrl(restClientBuilder, credentials.getEnvironment().getGraphEndpoint()); + return restClientBuilder.withCredentials(credentials).build(); + } + + private RestClient.Builder.Buildable modifyBaseUrl(RestClient.Builder.Buildable builder, String baseUrl) { + try { + // This reflection will be removed in next version of client runtime + Field enclosed = builder.getClass().getDeclaredField("this$0"); + enclosed.setAccessible(true); + Object enclosedObj = enclosed.get(builder); + Field url = enclosedObj.getClass().getDeclaredField("baseUrl"); + url.setAccessible(true); + url.set(enclosedObj, baseUrl); + } catch (IllegalAccessException | NoSuchFieldException ex) { + // swallow it to use default base url + } + return builder; + } } diff --git a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/implementation/ResourceManager.java b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/implementation/ResourceManager.java index 72556cd3db06..bbf7c430acc1 100644 --- a/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/implementation/ResourceManager.java +++ b/azure-mgmt-resources/src/main/java/com/microsoft/azure/management/resources/implementation/ResourceManager.java @@ -6,7 +6,8 @@ package com.microsoft.azure.management.resources.implementation; -import com.microsoft.azure.AzureEnvironment; +import com.microsoft.azure.RestClient; +import com.microsoft.azure.credentials.AzureTokenCredentials; import com.microsoft.azure.management.resources.Deployments; import com.microsoft.azure.management.resources.Features; import com.microsoft.azure.management.resources.GenericResources; @@ -17,8 +18,6 @@ import com.microsoft.azure.management.resources.fluentcore.arm.AzureConfigurable; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.AzureConfigurableImpl; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.ManagerBase; -import com.microsoft.azure.RestClient; -import com.microsoft.rest.credentials.ServiceClientCredentials; /** * Entry point to Azure resource management. @@ -40,8 +39,8 @@ public final class ResourceManager extends ManagerBase { * @param credentials the credentials to use * @return the ResourceManager instance */ - public static ResourceManager.Authenticated authenticate(ServiceClientCredentials credentials) { - return new AuthenticatedImpl(AzureEnvironment.AZURE.newRestClientBuilder() + public static ResourceManager.Authenticated authenticate(AzureTokenCredentials credentials) { + return new AuthenticatedImpl(credentials.getEnvironment().newRestClientBuilder() .withCredentials(credentials) .build()); } @@ -75,14 +74,14 @@ public interface Configurable extends AzureConfigurable { * @param credentials the credentials to use * @return the interface exposing resource management API entry points that work across subscriptions */ - ResourceManager.Authenticated authenticate(ServiceClientCredentials credentials); + ResourceManager.Authenticated authenticate(AzureTokenCredentials credentials); } /** * The implementation for Configurable interface. */ private static class ConfigurableImpl extends AzureConfigurableImpl implements Configurable { - public ResourceManager.Authenticated authenticate(ServiceClientCredentials credentials) { + public ResourceManager.Authenticated authenticate(AzureTokenCredentials credentials) { return ResourceManager.authenticate(buildRestClient(credentials)); } } diff --git a/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/ProvidersTests.java b/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/ProvidersTests.java index 7b5f2a9f0e0c..97c1952f856c 100644 --- a/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/ProvidersTests.java +++ b/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/ProvidersTests.java @@ -1,5 +1,6 @@ package com.microsoft.azure.management.resources; +import com.microsoft.azure.AzureEnvironment; import com.microsoft.azure.credentials.ApplicationTokenCredentials; import com.microsoft.azure.management.resources.implementation.ResourceManager; import okhttp3.logging.HttpLoggingInterceptor; @@ -22,7 +23,7 @@ public static void setup() throws Exception { System.getenv("client-id"), System.getenv("domain"), System.getenv("secret"), - null) + AzureEnvironment.AZURE) ).withSubscription(System.getenv("subscription-id")); } diff --git a/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/ResourceManagerTestBase.java b/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/ResourceManagerTestBase.java index d06757d31ef6..6440ef7a6fa9 100644 --- a/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/ResourceManagerTestBase.java +++ b/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/ResourceManagerTestBase.java @@ -1,5 +1,6 @@ package com.microsoft.azure.management.resources; +import com.microsoft.azure.AzureEnvironment; import com.microsoft.azure.credentials.ApplicationTokenCredentials; import com.microsoft.azure.management.resources.implementation.ResourceManager; import okhttp3.logging.HttpLoggingInterceptor; @@ -19,7 +20,7 @@ static void createClient() throws Exception { System.getenv("client-id"), System.getenv("domain"), System.getenv("secret"), - null) + AzureEnvironment.AZURE) ).withSubscription(System.getenv("subscription-id")); } } diff --git a/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/SubscriptionsTests.java b/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/SubscriptionsTests.java index e0e475997320..00a442d191ab 100644 --- a/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/SubscriptionsTests.java +++ b/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/SubscriptionsTests.java @@ -1,5 +1,6 @@ package com.microsoft.azure.management.resources; +import com.microsoft.azure.AzureEnvironment; import com.microsoft.azure.PagedList; import com.microsoft.azure.credentials.ApplicationTokenCredentials; import com.microsoft.azure.management.resources.implementation.ResourceManager; @@ -21,7 +22,7 @@ public static void setup() throws Exception { System.getenv("client-id"), System.getenv("domain"), System.getenv("secret"), - null) + AzureEnvironment.AZURE) ); } diff --git a/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/TenantsTests.java b/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/TenantsTests.java index bb99c81a636c..9e3f5cb2513a 100644 --- a/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/TenantsTests.java +++ b/azure-mgmt-resources/src/test/java/com/microsoft/azure/management/resources/TenantsTests.java @@ -1,5 +1,6 @@ package com.microsoft.azure.management.resources; +import com.microsoft.azure.AzureEnvironment; import com.microsoft.azure.PagedList; import com.microsoft.azure.credentials.ApplicationTokenCredentials; import com.microsoft.azure.management.resources.implementation.ResourceManager; @@ -21,7 +22,7 @@ public static void setup() throws Exception { System.getenv("client-id"), System.getenv("domain"), System.getenv("secret"), - null) + AzureEnvironment.AZURE) ); } diff --git a/azure-mgmt-storage/src/main/java/com/microsoft/azure/management/storage/implementation/StorageManager.java b/azure-mgmt-storage/src/main/java/com/microsoft/azure/management/storage/implementation/StorageManager.java index 5cc31ea14b2f..cf7c11f04a76 100644 --- a/azure-mgmt-storage/src/main/java/com/microsoft/azure/management/storage/implementation/StorageManager.java +++ b/azure-mgmt-storage/src/main/java/com/microsoft/azure/management/storage/implementation/StorageManager.java @@ -6,14 +6,13 @@ package com.microsoft.azure.management.storage.implementation; -import com.microsoft.azure.AzureEnvironment; import com.microsoft.azure.RestClient; +import com.microsoft.azure.credentials.AzureTokenCredentials; import com.microsoft.azure.management.resources.fluentcore.arm.AzureConfigurable; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.AzureConfigurableImpl; import com.microsoft.azure.management.resources.fluentcore.arm.implementation.Manager; import com.microsoft.azure.management.storage.StorageAccounts; import com.microsoft.azure.management.storage.Usages; -import com.microsoft.rest.credentials.ServiceClientCredentials; /** * Entry point to Azure storage resource management. @@ -39,8 +38,8 @@ public static Configurable configure() { * @param subscriptionId the subscription UUID * @return the StorageManager */ - public static StorageManager authenticate(ServiceClientCredentials credentials, String subscriptionId) { - return new StorageManager(AzureEnvironment.AZURE.newRestClientBuilder() + public static StorageManager authenticate(AzureTokenCredentials credentials, String subscriptionId) { + return new StorageManager(credentials.getEnvironment().newRestClientBuilder() .withCredentials(credentials) .build(), subscriptionId); } @@ -67,14 +66,14 @@ public interface Configurable extends AzureConfigurable { * @param subscriptionId the subscription UUID * @return the interface exposing storage management API entry points that work across subscriptions */ - StorageManager authenticate(ServiceClientCredentials credentials, String subscriptionId); + StorageManager authenticate(AzureTokenCredentials credentials, String subscriptionId); } /** * The implementation for Configurable interface. */ private static final class ConfigurableImpl extends AzureConfigurableImpl implements Configurable { - public StorageManager authenticate(ServiceClientCredentials credentials, String subscriptionId) { + public StorageManager authenticate(AzureTokenCredentials credentials, String subscriptionId) { return StorageManager.authenticate(buildRestClient(credentials), subscriptionId); } } diff --git a/azure-samples/src/main/java/com/microsoft/azure/management/network/samples/ManageNetworkSecurityGroup.java b/azure-samples/src/main/java/com/microsoft/azure/management/network/samples/ManageNetworkSecurityGroup.java index aa3fa968a603..5edd79c1bf36 100644 --- a/azure-samples/src/main/java/com/microsoft/azure/management/network/samples/ManageNetworkSecurityGroup.java +++ b/azure-samples/src/main/java/com/microsoft/azure/management/network/samples/ManageNetworkSecurityGroup.java @@ -80,7 +80,7 @@ public static void main(String[] args) { Network network = azure.networks() .define(vnetName) - .withRegion(Region.US_EAST) + .withRegion(Region.CHINA_NORTH) .withNewResourceGroup(rgName) .withAddressSpace("172.16.0.0/16") .defineSubnet("Front-end") @@ -102,7 +102,7 @@ public static void main(String[] args) { System.out.println("Creating a security group for the front end - allows SSH and HTTP"); NetworkSecurityGroup frontEndNSG = azure.networkSecurityGroups().define(frontEndNSGName) - .withRegion(Region.US_EAST) + .withRegion(Region.CHINA_NORTH) .withNewResourceGroup(rgName) .defineRule("ALLOW-SSH") .allowInbound() @@ -140,7 +140,7 @@ public static void main(String[] args) { + "denies all outbound internet traffic "); NetworkSecurityGroup backEndNSG = azure.networkSecurityGroups().define(backEndNSGName) - .withRegion(Region.US_EAST) + .withRegion(Region.CHINA_NORTH) .withExistingResourceGroup(rgName) .defineRule("ALLOW-SQL") .allowInbound() @@ -178,7 +178,7 @@ public static void main(String[] args) { System.out.println("Creating a network interface for the front end"); NetworkInterface networkInterface1 = azure.networkInterfaces().define(networkInterfaceName1) - .withRegion(Region.US_EAST) + .withRegion(Region.CHINA_NORTH) .withExistingResourceGroup(rgName) .withExistingPrimaryNetwork(network) .withSubnet("Front-end") @@ -200,7 +200,7 @@ public static void main(String[] args) { System.out.println("Creating a network interface for the back end"); NetworkInterface networkInterface2 = azure.networkInterfaces().define(networkInterfaceName2) - .withRegion(Region.US_EAST) + .withRegion(Region.CHINA_NORTH) .withExistingResourceGroup(rgName) .withExistingPrimaryNetwork(network) .withSubnet("Back-end") @@ -221,7 +221,7 @@ public static void main(String[] args) { Date t1 = new Date(); VirtualMachine frontEndVM = azure.virtualMachines().define(frontEndVMName) - .withRegion(Region.US_EAST) + .withRegion(Region.CHINA_NORTH) .withExistingResourceGroup(rgName) .withExistingPrimaryNetworkInterface(networkInterface1) .withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS) @@ -247,7 +247,7 @@ public static void main(String[] args) { t1 = new Date(); VirtualMachine backEndVM = azure.virtualMachines().define(backEndVMName) - .withRegion(Region.US_EAST) + .withRegion(Region.CHINA_NORTH) .withExistingResourceGroup(rgName) .withExistingPrimaryNetworkInterface(networkInterface2) .withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS) diff --git a/azure/src/main/java/com/microsoft/azure/management/Azure.java b/azure/src/main/java/com/microsoft/azure/management/Azure.java index 962ebdf519bf..ea4eb0a07c97 100644 --- a/azure/src/main/java/com/microsoft/azure/management/Azure.java +++ b/azure/src/main/java/com/microsoft/azure/management/Azure.java @@ -6,7 +6,6 @@ package com.microsoft.azure.management; -import com.microsoft.azure.AzureEnvironment; import com.microsoft.azure.CloudException; import com.microsoft.azure.PagedList; import com.microsoft.azure.RestClient; @@ -42,7 +41,6 @@ import com.microsoft.azure.management.storage.StorageAccounts; import com.microsoft.azure.management.storage.Usages; import com.microsoft.azure.management.storage.implementation.StorageManager; -import com.microsoft.rest.credentials.ServiceClientCredentials; import java.io.File; import java.io.IOException; @@ -59,20 +57,6 @@ public final class Azure { private final BatchManager batchManager; private final String subscriptionId; - /** - * Authenticate to Azure using a credentials object. - * - * @param credentials the credentials object - * @param tenantId the tenantId in Active Directory - * @return the authenticated Azure client - */ - public static Authenticated authenticate(ServiceClientCredentials credentials, String tenantId) { - return new AuthenticatedImpl( - AzureEnvironment.AZURE.newRestClientBuilder() - .withCredentials(credentials) - .build(), tenantId); - } - /** * Authenticate to Azure using an Azure credentials object. * @@ -81,7 +65,7 @@ public static Authenticated authenticate(ServiceClientCredentials credentials, S */ public static Authenticated authenticate(AzureTokenCredentials credentials) { return new AuthenticatedImpl( - AzureEnvironment.AZURE.newRestClientBuilder() + credentials.getEnvironment().newRestClientBuilder() .withCredentials(credentials) .build(), credentials.getDomain()); } @@ -104,7 +88,7 @@ public static Authenticated authenticate(AzureTokenCredentials credentials) { */ public static Authenticated authenticate(File credentialsFile) throws IOException { ApplicationTokenCredentials credentials = ApplicationTokenCredentials.fromFile(credentialsFile); - return new AuthenticatedImpl(AzureEnvironment.AZURE.newRestClientBuilder() + return new AuthenticatedImpl(credentials.getEnvironment().newRestClientBuilder() .withCredentials(credentials) .build(), credentials.getDomain()).withDefaultSubscription(credentials.defaultSubscriptionId()); } @@ -134,15 +118,6 @@ public static Configurable configure() { * The interface allowing configurations to be made on the client. */ public interface Configurable extends AzureConfigurable { - /** - * Authenticates API access based on the provided credentials. - * - * @param credentials The credentials to authenticate API access with - * @param tenantId the tenantId in Active Directory - * @return the authenticated Azure client - */ - Authenticated authenticate(ServiceClientCredentials credentials, String tenantId); - /** * Authenticates API access based on the provided credentials. * @@ -166,11 +141,6 @@ public interface Configurable extends AzureConfigurable { * The implementation for {@link Configurable}. */ private static final class ConfigurableImpl extends AzureConfigurableImpl implements Configurable { - @Override - public Authenticated authenticate(ServiceClientCredentials credentials, String tenantId) { - return Azure.authenticate(buildRestClient(credentials), tenantId); - } - @Override public Authenticated authenticate(AzureTokenCredentials credentials) { return Azure.authenticate(buildRestClient(credentials), credentials.getDomain()); From 5bdfd296562f58234948ba4737cfdb0ac74eccba Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Mon, 3 Oct 2016 17:02:57 -0700 Subject: [PATCH 2/2] Revert sample from using China north --- .../samples/ManageNetworkSecurityGroup.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/azure-samples/src/main/java/com/microsoft/azure/management/network/samples/ManageNetworkSecurityGroup.java b/azure-samples/src/main/java/com/microsoft/azure/management/network/samples/ManageNetworkSecurityGroup.java index 5edd79c1bf36..aa3fa968a603 100644 --- a/azure-samples/src/main/java/com/microsoft/azure/management/network/samples/ManageNetworkSecurityGroup.java +++ b/azure-samples/src/main/java/com/microsoft/azure/management/network/samples/ManageNetworkSecurityGroup.java @@ -80,7 +80,7 @@ public static void main(String[] args) { Network network = azure.networks() .define(vnetName) - .withRegion(Region.CHINA_NORTH) + .withRegion(Region.US_EAST) .withNewResourceGroup(rgName) .withAddressSpace("172.16.0.0/16") .defineSubnet("Front-end") @@ -102,7 +102,7 @@ public static void main(String[] args) { System.out.println("Creating a security group for the front end - allows SSH and HTTP"); NetworkSecurityGroup frontEndNSG = azure.networkSecurityGroups().define(frontEndNSGName) - .withRegion(Region.CHINA_NORTH) + .withRegion(Region.US_EAST) .withNewResourceGroup(rgName) .defineRule("ALLOW-SSH") .allowInbound() @@ -140,7 +140,7 @@ public static void main(String[] args) { + "denies all outbound internet traffic "); NetworkSecurityGroup backEndNSG = azure.networkSecurityGroups().define(backEndNSGName) - .withRegion(Region.CHINA_NORTH) + .withRegion(Region.US_EAST) .withExistingResourceGroup(rgName) .defineRule("ALLOW-SQL") .allowInbound() @@ -178,7 +178,7 @@ public static void main(String[] args) { System.out.println("Creating a network interface for the front end"); NetworkInterface networkInterface1 = azure.networkInterfaces().define(networkInterfaceName1) - .withRegion(Region.CHINA_NORTH) + .withRegion(Region.US_EAST) .withExistingResourceGroup(rgName) .withExistingPrimaryNetwork(network) .withSubnet("Front-end") @@ -200,7 +200,7 @@ public static void main(String[] args) { System.out.println("Creating a network interface for the back end"); NetworkInterface networkInterface2 = azure.networkInterfaces().define(networkInterfaceName2) - .withRegion(Region.CHINA_NORTH) + .withRegion(Region.US_EAST) .withExistingResourceGroup(rgName) .withExistingPrimaryNetwork(network) .withSubnet("Back-end") @@ -221,7 +221,7 @@ public static void main(String[] args) { Date t1 = new Date(); VirtualMachine frontEndVM = azure.virtualMachines().define(frontEndVMName) - .withRegion(Region.CHINA_NORTH) + .withRegion(Region.US_EAST) .withExistingResourceGroup(rgName) .withExistingPrimaryNetworkInterface(networkInterface1) .withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS) @@ -247,7 +247,7 @@ public static void main(String[] args) { t1 = new Date(); VirtualMachine backEndVM = azure.virtualMachines().define(backEndVMName) - .withRegion(Region.CHINA_NORTH) + .withRegion(Region.US_EAST) .withExistingResourceGroup(rgName) .withExistingPrimaryNetworkInterface(networkInterface2) .withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS)