You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2016/09/29 14:55:06 UTC

jclouds-labs git commit: fixing createNodeWithGroupEncodedIntoName

Repository: jclouds-labs
Updated Branches:
  refs/heads/fix/AzureTemplateBuilderLiveTest e5035aaad -> 1b958fcf7


fixing createNodeWithGroupEncodedIntoName


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/1b958fcf
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/1b958fcf
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/1b958fcf

Branch: refs/heads/fix/AzureTemplateBuilderLiveTest
Commit: 1b958fcf79f2aae0184d000044df52c5c1303cda
Parents: e5035aa
Author: Andrea Turli <an...@gmail.com>
Authored: Thu Sep 29 16:54:55 2016 +0200
Committer: Andrea Turli <an...@gmail.com>
Committed: Thu Sep 29 16:54:55 2016 +0200

----------------------------------------------------------------------
 .../arm/compute/AzureComputeServiceAdapter.java | 32 ++++++++------------
 1 file changed, 13 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b958fcf/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 11a9257..b1cc223 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
@@ -44,7 +44,6 @@ import org.jclouds.azurecompute.arm.domain.VMImage;
 import org.jclouds.azurecompute.arm.domain.VMSize;
 import org.jclouds.azurecompute.arm.domain.Value;
 import org.jclouds.azurecompute.arm.domain.Version;
-import org.jclouds.azurecompute.arm.features.DeploymentApi;
 import org.jclouds.azurecompute.arm.features.OSImageApi;
 import org.jclouds.azurecompute.arm.functions.CleanupResources;
 import org.jclouds.azurecompute.arm.util.BlobHelper;
@@ -114,39 +113,34 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo
       DeploymentTemplateBuilder deploymentTemplateBuilder = api.deploymentTemplateFactory().create(group, name, template);
       DeploymentBody deploymentTemplateBody = deploymentTemplateBuilder.getDeploymentTemplate();
       DeploymentProperties properties = DeploymentProperties.create(deploymentTemplateBody);
-
       final String deploymentTemplate = UrlEscapers.urlFormParameterEscaper().escape(deploymentTemplateBuilder.getDeploymentTemplateJson(properties));
 
       logger.debug("Deployment created with name: %s group: %s", name, group);
 
-
-      final Set<VMDeployment> deployments = Sets.newHashSet();
-
-      final DeploymentApi deploymentApi = api.getDeploymentApi(azureGroup);
-
+      Deployment deployment = api.getDeploymentApi(azureGroup).create(name, deploymentTemplate);
       if (!retry(new Predicate<String>() {
          @Override
          public boolean apply(final String name) {
-            Deployment deployment = deploymentApi.create(name, deploymentTemplate);
-
-            if (deployment != null) {
-               VMDeployment vmDeployment = VMDeployment.create(deployment);
-               deployments.add(vmDeployment);
-            } else {
-               logger.debug("Failed to create deployment!");
+            Deployment deployment = api.getDeploymentApi(azureGroup).get(name);
+            if (deployment == null) return false;
+            Deployment.ProvisioningState state = Deployment.ProvisioningState.fromValue(deployment.properties().provisioningState());
+            if (state == Deployment.ProvisioningState.FAILED) {
+               logger.error(String.format("Deployment %s failed", deployment));
+               cleanupResources.apply(name);
+               throw new IllegalStateException(String.format("Deployment %s failed", deployment));
             }
-            return !deployments.isEmpty();
+            return state == Deployment.ProvisioningState.SUCCEEDED;
          }
-      }, azureComputeConstants.operationTimeout(), 1, SECONDS).apply(name)) {
+      }, azureComputeConstants.operationTimeout(), 1, SECONDS).apply(deployment.name())) {
          final String illegalStateExceptionMessage = format("Deployment %s was not created within %sms so it will be destroyed.",
                  name, azureComputeConstants.operationTimeout());
          logger.warn(illegalStateExceptionMessage);
-         destroyNode(name);
+         cleanupResources.apply(name);
          throw new IllegalStateException(illegalStateExceptionMessage);
       }
-      final VMDeployment deployment = deployments.iterator().next();
+      VMDeployment vmDeployment = deploymentToVMDeployment.apply(api.getDeploymentApi(azureGroup).get(name));
       // Safe to pass null credentials here, as jclouds will default populate the node with the default credentials from the image, or the ones in the options, if provided.
-      return new NodeAndInitialCredentials<VMDeployment>(deployment, name, null);
+      return new NodeAndInitialCredentials<VMDeployment>(vmDeployment, name, null);
    }
 
    @Override