Fixed unit tests and AzureTemplateBuilderLiveTest
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/e5035aaa Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/e5035aaa Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/e5035aaa Branch: refs/heads/fix/AzureTemplateBuilderLiveTest Commit: e5035aaad806fe0594ea7a49d01d784b7610255c Parents: 68a163f Author: Ignasi Barrera <[email protected]> Authored: Thu Sep 29 14:03:29 2016 +0200 Committer: Ignasi Barrera <[email protected]> Committed: Thu Sep 29 14:03:29 2016 +0200 ---------------------------------------------------------------------- .../arm/AzureComputeProviderMetadata.java | 4 ++-- .../functions/DeploymentToNodeMetadata.java | 8 -------- .../arm/util/DeploymentTemplateBuilder.java | 19 ++++++++++++------- .../features/DeploymentTemplateBuilderTest.java | 15 ++++++++++++--- .../internal/BaseAzureComputeApiMockTest.java | 7 +++++-- 5 files changed, 31 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e5035aaa/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeProviderMetadata.java ---------------------------------------------------------------------- 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 b4ba4e7..cf98a8d 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 @@ -75,8 +75,8 @@ public class AzureComputeProviderMetadata extends BaseProviderMetadata { properties.put(DEFAULT_DATADISKSIZE, "100"); properties.put(IMAGE_PUBLISHERS, "Canonical,RedHat"); // Default credentials for all images - properties.put("jclouds.azurecompute-arm.image.login-user", "jclouds:Password1!"); - properties.put("jclouds.azurecompute-arm.image.authenticate-sudo", "true"); + properties.put("jclouds.image.login-user", "jclouds:Password1!"); + properties.put("jclouds.image.authenticate-sudo", "true"); properties.put(TIMEOUT_NODE_TERMINATED, 60 * 10 * 1000); return properties; } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e5035aaa/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/functions/DeploymentToNodeMetadata.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/functions/DeploymentToNodeMetadata.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/functions/DeploymentToNodeMetadata.java index ba6ce6d..7b59d5b 100644 --- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/functions/DeploymentToNodeMetadata.java +++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/functions/DeploymentToNodeMetadata.java @@ -23,7 +23,6 @@ import java.util.Set; import javax.inject.Inject; import org.jclouds.azurecompute.arm.AzureComputeApi; -import org.jclouds.azurecompute.arm.domain.ComputeNode; import org.jclouds.azurecompute.arm.domain.Deployment; import org.jclouds.azurecompute.arm.domain.ImageReference; import org.jclouds.azurecompute.arm.domain.IpConfiguration; @@ -50,13 +49,6 @@ import com.google.common.collect.Sets; public class DeploymentToNodeMetadata implements Function<VMDeployment, NodeMetadata> { - private static final Map<ComputeNode.Status, NodeMetadata.Status> INSTANCESTATUS_TO_NODESTATUS = - ImmutableMap.<ComputeNode.Status, NodeMetadata.Status>builder(). - put(ComputeNode.Status.GOOD, NodeMetadata.Status.RUNNING). - put(ComputeNode.Status.BAD, NodeMetadata.Status.ERROR). - put(ComputeNode.Status.UNRECOGNIZED, NodeMetadata.Status.UNRECOGNIZED). - build(); - // When using the Deployment API to deploy an ARM template, the deployment goes through // stages. Accepted -> Running -> Succeeded. Only when the deployment has SUCCEEDED is // the resource deployed using the template actually ready. http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e5035aaa/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/util/DeploymentTemplateBuilder.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/util/DeploymentTemplateBuilder.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/util/DeploymentTemplateBuilder.java index 02d343f..0f94379 100644 --- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/util/DeploymentTemplateBuilder.java +++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/util/DeploymentTemplateBuilder.java @@ -16,6 +16,10 @@ */ package org.jclouds.azurecompute.arm.util; +import static com.google.common.io.BaseEncoding.base64; +import static org.jclouds.azurecompute.arm.compute.extensions.AzureComputeImageExtension.CUSTOM_IMAGE_PREFIX; +import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.STORAGE_API_VERSION; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -66,9 +70,6 @@ import com.google.common.collect.Lists; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; -import static org.jclouds.azurecompute.arm.compute.extensions.AzureComputeImageExtension.CUSTOM_IMAGE_PREFIX; -import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.STORAGE_API_VERSION; - public class DeploymentTemplateBuilder { public interface Factory { DeploymentTemplateBuilder create(@Assisted("group") String group, @Assisted("name") String name, Template template); @@ -213,7 +214,6 @@ public class DeploymentTemplateBuilder { String ipConfigurationName = name + "ipconfig"; String subnetId = options.getSubnetId(); - String vnetName = options.getVirtualNetworkName(); variables.put("ipConfigurationName", ipConfigurationName); variables.put("subnetReference", subnetId); @@ -357,18 +357,23 @@ public class DeploymentTemplateBuilder { boolean usePublicKey = options.getPublicKey() != null; - if (usePublicKey) { + if (usePublicKey || keyVaultInUse()) { OSProfile.LinuxConfiguration configuration = OSProfile.LinuxConfiguration.create("true", OSProfile.LinuxConfiguration.SSH.create(Arrays.asList( OSProfile.LinuxConfiguration.SSH.SSHPublicKey.create( - "[concat('/home/',variables('loginUser'),'/.ssh/authorized_keys')]", - options.getPublicKey()) + "[concat('/home/',variables('loginUser'),'/.ssh/authorized_keys')]", + keyVaultInUse() ? "[parameters('publicKeyFromAzureKeyVault')]" : options.getPublicKey()) )) ); profileBuilder.linuxConfiguration(configuration); } else if (loginCredentials.getOptionalPassword().isPresent()) { profileBuilder.adminPassword(loginCredentials.getOptionalPassword().get()); } + + if (!Strings.isNullOrEmpty(options.getCustomData())){ + String encodedCustomData = base64().encode(options.getCustomData().getBytes()); + profileBuilder.customData(encodedCustomData); + } OSProfile osProfile = profileBuilder.build(); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e5035aaa/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DeploymentTemplateBuilderTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DeploymentTemplateBuilderTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DeploymentTemplateBuilderTest.java index 1657899..d14e3c6 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DeploymentTemplateBuilderTest.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DeploymentTemplateBuilderTest.java @@ -43,10 +43,13 @@ import org.jclouds.compute.options.TemplateOptions; import org.jclouds.domain.Location; import org.jclouds.domain.LocationBuilder; import org.jclouds.domain.LocationScope; +import org.jclouds.domain.LoginCredentials; import org.testng.Assert; import org.testng.annotations.Test; import com.google.common.collect.Iterables; +import com.google.inject.Key; +import com.google.inject.name.Names; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; @@ -229,14 +232,20 @@ public class DeploymentTemplateBuilderTest extends BaseAzureComputeApiMockTest { } private Template getMockTemplate(TemplateOptions options) { - ((AzureTemplateOptions)options).virtualNetworkName(vnetName); - ((AzureTemplateOptions)options).subnetId(subnetId); + options.as(AzureTemplateOptions.class).virtualNetworkName(vnetName); + options.as(AzureTemplateOptions.class).subnetId(subnetId); + + LoginCredentials defaultImageCredentials = context.utils().injector() + .getInstance(Key.get(LoginCredentials.class, Names.named("image"))); Location provider = (new LocationBuilder()).scope(LocationScope.PROVIDER).id("azurecompute-arm").description("azurecompute-arm").build(); Location region = (new LocationBuilder()).scope(LocationScope.REGION).id("northeurope").description("North Europe").parent(provider).build(); OperatingSystem os = OperatingSystem.builder().name("osName").version("osVersion").description("osDescription").arch("X86_32").build(); //Note that version is set to "latest" - Image image = (new ImageBuilder()).id("imageId").providerId("imageId").name("imageName").description("imageDescription").version("sku").operatingSystem(os).status(Image.Status.AVAILABLE).location(region).build(); + + Image image = (new ImageBuilder()).id("imageId").providerId("imageId").name("imageName") + .description("imageDescription").version("sku").operatingSystem(os).status(Image.Status.AVAILABLE) + .location(region).defaultCredentials(defaultImageCredentials).build(); Hardware hardware = (new HardwareBuilder()).id("Standard_A0").build(); return new TemplateImpl(image, hardware, region, options); } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e5035aaa/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/BaseAzureComputeApiMockTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/BaseAzureComputeApiMockTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/BaseAzureComputeApiMockTest.java index 82af978..5c60f54 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/BaseAzureComputeApiMockTest.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/BaseAzureComputeApiMockTest.java @@ -28,6 +28,7 @@ import org.jclouds.ContextBuilder; import org.jclouds.azurecompute.arm.AzureComputeApi; import org.jclouds.azurecompute.arm.AzureComputeProviderMetadata; import org.jclouds.concurrent.config.ExecutorServiceModule; +import org.jclouds.rest.ApiContext; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -50,6 +51,7 @@ public class BaseAzureComputeApiMockTest { protected MockWebServer server; protected AzureComputeApi api; + protected ApiContext<AzureComputeApi> context; // So that we can ignore formatting. private final JsonParser parser = new JsonParser(); @@ -62,12 +64,13 @@ public class BaseAzureComputeApiMockTest { properties.put(CREDENTIAL_TYPE, BEARER_TOKEN_CREDENTIALS.toString()); properties.put("oauth.endpoint", "https://login.microsoftonline.com/tenant-id/oauth2/token"); AzureComputeProviderMetadata pm = AzureComputeProviderMetadata.builder().build(); - api = ContextBuilder.newBuilder(pm) + context = ContextBuilder.newBuilder(pm) .credentials("", MOCK_BEARER_TOKEN) .endpoint(server.getUrl("/").toString() + "subscriptions/SUBSCRIPTIONID") .modules(modules) .overrides(properties) - .buildApi(AzureComputeApi.class); + .build(); + api = context.getApi(); } @AfterMethod(alwaysRun = true)
