[JCLOUDS-1139] add an option to not deallocate a VM when suspending
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/787af1dc Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/787af1dc Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/787af1dc Branch: refs/heads/master Commit: 787af1dc812800075b8efefa86379525159ada90 Parents: e1c55b4 Author: Ladislav Thon <[email protected]> Authored: Thu Jul 14 15:48:37 2016 +0200 Committer: Ignasi Barrera <[email protected]> Committed: Sun Jul 17 23:35:31 2016 +0200 ---------------------------------------------------------------------- .../jclouds/azurecompute/AzureComputeProviderMetadata.java | 2 ++ .../azurecompute/compute/AzureComputeServiceAdapter.java | 5 ++++- .../compute/config/AzureComputeServiceContextModule.java | 9 +++++++++ .../jclouds/azurecompute/config/AzureComputeProperties.java | 2 ++ 4 files changed, 17 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/787af1dc/azurecompute/src/main/java/org/jclouds/azurecompute/AzureComputeProviderMetadata.java ---------------------------------------------------------------------- diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/AzureComputeProviderMetadata.java b/azurecompute/src/main/java/org/jclouds/azurecompute/AzureComputeProviderMetadata.java index 731b52f..4a82f67 100644 --- a/azurecompute/src/main/java/org/jclouds/azurecompute/AzureComputeProviderMetadata.java +++ b/azurecompute/src/main/java/org/jclouds/azurecompute/AzureComputeProviderMetadata.java @@ -16,6 +16,7 @@ */ package org.jclouds.azurecompute; +import static org.jclouds.azurecompute.config.AzureComputeProperties.DEALLOCATE_WHEN_SUSPENDING; import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_POLL_INITIAL_PERIOD; import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_POLL_MAX_PERIOD; import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_TIMEOUT; @@ -53,6 +54,7 @@ public class AzureComputeProviderMetadata extends BaseProviderMetadata { properties.setProperty(OPERATION_POLL_MAX_PERIOD, "15"); properties.setProperty(TCP_RULE_FORMAT, "tcp_%s-%s"); properties.setProperty(TCP_RULE_REGEXP, "tcp_\\d{1,5}-\\d{1,5}"); + properties.setProperty(DEALLOCATE_WHEN_SUSPENDING, "true"); return properties; } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/787af1dc/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java ---------------------------------------------------------------------- diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java b/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java index 394dc65..ea579de 100644 --- a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java +++ b/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java @@ -72,6 +72,7 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<Deploym private static final String DEFAULT_LOGIN_PASSWORD = "Azur3Compute!"; public static final String POST_SHUTDOWN_ACTION = "StoppedDeallocated"; + private static final String POST_SHUTDOWN_ACTION_NO_DEALLOCATE = "Stopped"; @Resource @Named(ComputeServiceConstants.COMPUTE_LOGGER) @@ -419,7 +420,9 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<Deploym final CloudService cloudService = api.getCloudServiceApi().get(id); if (cloudService != null) { logger.debug("Suspending %s ...", id); - trackRequest(api.getVirtualMachineApiForDeploymentInService(id, cloudService.name()).shutdown(id, POST_SHUTDOWN_ACTION)); + String postShutdownAction = azureComputeConstants.deallocateWhenSuspending() + ? POST_SHUTDOWN_ACTION : POST_SHUTDOWN_ACTION_NO_DEALLOCATE; + trackRequest(api.getVirtualMachineApiForDeploymentInService(id, cloudService.name()).shutdown(id, postShutdownAction)); logger.debug("Suspended %s", id); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/787af1dc/azurecompute/src/main/java/org/jclouds/azurecompute/compute/config/AzureComputeServiceContextModule.java ---------------------------------------------------------------------- diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/config/AzureComputeServiceContextModule.java b/azurecompute/src/main/java/org/jclouds/azurecompute/compute/config/AzureComputeServiceContextModule.java index 8d902d1..e6d8812 100644 --- a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/config/AzureComputeServiceContextModule.java +++ b/azurecompute/src/main/java/org/jclouds/azurecompute/compute/config/AzureComputeServiceContextModule.java @@ -16,6 +16,7 @@ */ package org.jclouds.azurecompute.compute.config; +import static org.jclouds.azurecompute.config.AzureComputeProperties.DEALLOCATE_WHEN_SUSPENDING; import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_POLL_INITIAL_PERIOD; import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_POLL_MAX_PERIOD; import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_TIMEOUT; @@ -122,6 +123,10 @@ public class AzureComputeServiceContextModule @Inject private String tcpRuleRegexpProperty; + @Named(DEALLOCATE_WHEN_SUSPENDING) + @Inject + private String deallocateWhenSuspending; + public Long operationTimeout() { return Long.parseLong(operationTimeoutProperty); } @@ -141,6 +146,10 @@ public class AzureComputeServiceContextModule public String tcpRuleRegexp() { return tcpRuleRegexpProperty; } + + public boolean deallocateWhenSuspending() { + return Boolean.parseBoolean(deallocateWhenSuspending); + } } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/787af1dc/azurecompute/src/main/java/org/jclouds/azurecompute/config/AzureComputeProperties.java ---------------------------------------------------------------------- diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/config/AzureComputeProperties.java b/azurecompute/src/main/java/org/jclouds/azurecompute/config/AzureComputeProperties.java index 9592f4c..381e1b8 100644 --- a/azurecompute/src/main/java/org/jclouds/azurecompute/config/AzureComputeProperties.java +++ b/azurecompute/src/main/java/org/jclouds/azurecompute/config/AzureComputeProperties.java @@ -31,4 +31,6 @@ public class AzureComputeProperties { public static final String TCP_RULE_REGEXP = "jclouds.azurecompute.tcp.rule.regexp"; + public static final String DEALLOCATE_WHEN_SUSPENDING = "jclouds.azurecompute.deallocate.when.suspending"; + }
