You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2016/07/17 21:46:15 UTC
[1/4] jclouds-labs git commit: [JCLOUDS-664] make getImage(id) only
do a single API request
Repository: jclouds-labs
Updated Branches:
refs/heads/master b975be5e8 -> 787af1dc8
[JCLOUDS-664] make getImage(id) only do a single API request
* Fill in the private IP addresses in NodeMetadata
* Unify how getNode and listNodes build the VMDeployment
* Change VMDeployment to use AutoValue
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/913e4be9
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/913e4be9
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/913e4be9
Branch: refs/heads/master
Commit: 913e4be9d55ac3defbc430f0dc7f995ba690b2e9
Parents: b975be5
Author: Ladislav Thon <lt...@redhat.com>
Authored: Mon Jul 11 10:32:11 2016 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Sun Jul 17 23:26:26 2016 +0200
----------------------------------------------------------------------
.../arm/compute/AzureComputeServiceAdapter.java | 94 +++++++++++---------
.../functions/DeploymentToNodeMetadata.java | 49 ++++++----
.../azurecompute/arm/domain/VMDeployment.java | 36 ++++++--
3 files changed, 113 insertions(+), 66 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/913e4be9/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 48c7672..53e49ee 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
@@ -26,6 +26,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import javax.annotation.Resource;
@@ -42,6 +43,7 @@ import org.jclouds.azurecompute.arm.compute.functions.VMImageToImage;
import org.jclouds.azurecompute.arm.domain.Deployment;
import org.jclouds.azurecompute.arm.domain.DeploymentBody;
import org.jclouds.azurecompute.arm.domain.DeploymentProperties;
+import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCard;
import org.jclouds.azurecompute.arm.domain.ResourceProviderMetaData;
import org.jclouds.azurecompute.arm.domain.VMImage;
import org.jclouds.azurecompute.arm.domain.VMHardware;
@@ -51,9 +53,9 @@ 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.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.features.VirtualMachineApi;
import org.jclouds.azurecompute.arm.util.DeploymentTemplateBuilder;
import org.jclouds.compute.ComputeServiceAdapter;
import org.jclouds.compute.domain.Template;
@@ -131,8 +133,7 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo
Deployment deployment = deploymentApi.create(name, deploymentTemplate);
if (deployment != null) {
- VMDeployment vmDeployment = new VMDeployment();
- vmDeployment.deployment = deployment;
+ VMDeployment vmDeployment = VMDeployment.create(deployment);
deployments.add(vmDeployment);
} else {
logger.debug("Failed to create deployment!");
@@ -272,13 +273,15 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo
return ref;
}
- Iterable<VMImage> images = listImages();
+ String location = fields[0];
+ String publisher = fields[1];
+ String offer = fields[2];
+ String sku = fields[3];
- for (VMImage image : images) {
- String imageId = VMImageToImage.encodeFieldsToUniqueId(image);
- if (id.equals(imageId)){
- return image;
- }
+ OSImageApi osImageApi = api.getOSImageApi(location);
+ List<Version> versions = osImageApi.listVersions(publisher, offer, sku);
+ if (!versions.isEmpty()) {
+ return VMImage.create(publisher, offer, sku, versions.get(0).name(), location, false);
}
return null;
}
@@ -324,21 +327,7 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo
Deployment deployment = api.getDeploymentApi(azureGroup).get(id);
if (deployment == null)
return null;
- String resourceGroup = getResourceGroupFromId(deployment.id());
- VMDeployment vmDeployment = new VMDeployment();
- vmDeployment.deployment = deployment;
- List<PublicIPAddress> list = getIPAddresses(deployment);
- vmDeployment.ipAddressList = list;
- VirtualMachine vm = api.getVirtualMachineApi(azureGroup).get(id);
- vmDeployment.virtualMachine = vm;
- vmDeployment.vm = api.getVirtualMachineApi(azureGroup).getInstanceDetails(id);
- if (vm != null && vm.tags() != null) {
- vmDeployment.userMetaData = vm.tags();
- String tagString = vmDeployment.userMetaData.get("tags");
- List<String> tags = Arrays.asList(tagString.split(","));
- vmDeployment.tags = tags;
- }
- return vmDeployment;
+ return convertDeploymentToVMDeployment(deployment);
}
@Override
@@ -384,30 +373,49 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo
return list;
}
+ private List<NetworkInterfaceCard> getNetworkInterfaceCards(Deployment deployment) {
+ List<NetworkInterfaceCard> result = new ArrayList<NetworkInterfaceCard>();
+
+ String resourceGroup = getResourceGroupFromId(deployment.id());
+
+ if (deployment.properties() != null && deployment.properties().dependencies() != null) {
+ for (Deployment.Dependency dependency : deployment.properties().dependencies()) {
+ if (dependency.resourceType().equals("Microsoft.Network/networkInterfaces")) {
+ String resourceName = dependency.resourceName();
+ NetworkInterfaceCard nic = api.getNetworkInterfaceCardApi(resourceGroup).get(resourceName);
+ result.add(nic);
+ }
+ }
+ }
+
+ return result;
+ }
+
+ private VMDeployment convertDeploymentToVMDeployment(Deployment deployment) {
+ String id = deployment.id();
+ String resourceGroup = getResourceGroupFromId(id);
+
+ List<PublicIPAddress> ipAddressList = getIPAddresses(deployment);
+ List<NetworkInterfaceCard> networkInterfaceCards = getNetworkInterfaceCards(deployment);
+ VirtualMachine vm = api.getVirtualMachineApi(azureGroup).get(id);
+ VirtualMachineInstance vmInstanceDetails = api.getVirtualMachineApi(azureGroup).getInstanceDetails(id);
+ Map<String, String> userMetaData = null;
+ Iterable<String> tags = null;
+ if (vm != null && vm.tags() != null) {
+ userMetaData = vm.tags();
+ String tagString = userMetaData.get("tags");
+ tags = Arrays.asList(tagString.split(","));
+ }
+ return VMDeployment.create(deployment, ipAddressList, vmInstanceDetails, vm, networkInterfaceCards, userMetaData, tags);
+ }
+
@Override
public Iterable<VMDeployment> listNodes() {
List<Deployment> deployments = api.getDeploymentApi(azureGroup).list();
List<VMDeployment> vmDeployments = new ArrayList<VMDeployment>();
-
for (Deployment d : deployments){
- VMDeployment vmDeployment = new VMDeployment();
- vmDeployment.deployment = d;
- VirtualMachineApi vmApi = api.getVirtualMachineApi(azureGroup);
- vmDeployment.vm = vmApi.getInstanceDetails(d.name());
- List<PublicIPAddress> list = getIPAddresses(d);
- vmDeployment.ipAddressList = list;
-
- VirtualMachine vm = vmApi.get(d.name());
- vmDeployment.virtualMachine = vm;
-
- if (vm != null && vm.tags() != null) {
- vmDeployment.userMetaData = vm.tags();
- String tagString = vmDeployment.userMetaData.get("tags");
- List<String> tags = Arrays.asList(tagString.split(","));
- vmDeployment.tags = tags;
- }
- vmDeployments.add(vmDeployment);
+ vmDeployments.add(convertDeploymentToVMDeployment(d));
}
return vmDeployments;
}
@@ -417,7 +425,7 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<VMDeplo
return Iterables.filter(listNodes(), new Predicate<VMDeployment>() {
@Override
public boolean apply(final VMDeployment input) {
- return Iterables.contains(ids, input.deployment.name());
+ return Iterables.contains(ids, input.deployment().name());
}
});
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/913e4be9/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 40e09b7..8ea8235 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
@@ -27,6 +27,8 @@ 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;
+import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCard;
import org.jclouds.azurecompute.arm.domain.PublicIPAddress;
import org.jclouds.azurecompute.arm.domain.VMDeployment;
import org.jclouds.azurecompute.arm.domain.VMHardware;
@@ -111,20 +113,20 @@ public class DeploymentToNodeMetadata implements Function<VMDeployment, NodeMeta
@Override
public NodeMetadata apply(final VMDeployment from) {
final NodeMetadataBuilder builder = new NodeMetadataBuilder();
- final Deployment deployment = from.deployment;
+ final Deployment deployment = from.deployment();
builder.id(deployment.name());
builder.providerId(deployment.name());
builder.name(deployment.name());
String group = this.nodeNamingConvention.extractGroup(deployment.name());
builder.group(group);
- if (from.tags != null)
- builder.tags(from.tags);
- if (from.userMetaData != null)
- builder.userMetadata(from.userMetaData);
+ if (from.tags() != null)
+ builder.tags(from.tags());
+ if (from.userMetaData() != null)
+ builder.userMetadata(from.userMetaData());
NodeMetadata.Status status = STATUS_TO_NODESTATUS.get(provisioningStateFromString(deployment.properties().provisioningState()));
- if (status == NodeMetadata.Status.RUNNING && from.vm != null && from.vm.statuses() != null) {
- List<VirtualMachineInstance.VirtualMachineStatus> statuses = from.vm.statuses();
+ if (status == NodeMetadata.Status.RUNNING && from.vm() != null && from.vm().statuses() != null) {
+ List<VirtualMachineInstance.VirtualMachineStatus> statuses = from.vm().statuses();
for (int c = 0; c < statuses.size(); c++) {
if (statuses.get(c).code().substring(0, 10).equals("PowerState")) {
if (statuses.get(c).displayStatus().equals("VM running")) {
@@ -139,11 +141,11 @@ public class DeploymentToNodeMetadata implements Function<VMDeployment, NodeMeta
builder.status(status);
- if (from.vm != null) {
+ if (from.vm() != null) {
builder.hostname(deployment.name() + "pc");
}
- Credentials credentials = credentialStore.get("node#" + from.deployment.name());
+ Credentials credentials = credentialStore.get("node#" + from.deployment().name());
if (credentials != null && credentials.identity.equals(JCLOUDS_DEFAULT_USERNAME)) {
credentials = new Credentials(AZURE_LOGIN_USERNAME, credentials.credential);
}
@@ -162,9 +164,9 @@ public class DeploymentToNodeMetadata implements Function<VMDeployment, NodeMeta
builder.credentials(LoginCredentials.fromCredentials(credentials));
final Set<String> publicIpAddresses = Sets.newLinkedHashSet();
- if (from.ipAddressList != null) {
- for (int c = 0; c < from.ipAddressList.size(); c++) {
- PublicIPAddress ip = from.ipAddressList.get(c);
+ if (from.ipAddressList() != null) {
+ for (int c = 0; c < from.ipAddressList().size(); c++) {
+ PublicIPAddress ip = from.ipAddressList().get(c);
if (ip != null && ip.properties() != null && ip.properties().ipAddress() != null)
{
publicIpAddresses.add(ip.properties().ipAddress());
@@ -174,10 +176,25 @@ public class DeploymentToNodeMetadata implements Function<VMDeployment, NodeMeta
if (publicIpAddresses.size() > 0)
builder.publicAddresses(publicIpAddresses);
}
+ final Set<String> privateIpAddresses = Sets.newLinkedHashSet();
+ if (from.networkInterfaceCards() != null) {
+ for (NetworkInterfaceCard nic : from.networkInterfaceCards()) {
+ if (nic != null && nic.properties() != null && nic.properties().ipConfigurations() != null) {
+ for (IpConfiguration ip : nic.properties().ipConfigurations()) {
+ if (ip != null && ip.properties() != null && ip.properties().privateIPAddress() != null) {
+ privateIpAddresses.add(ip.properties().privateIPAddress());
+ }
+ }
+ }
+ }
+ if (!privateIpAddresses.isEmpty()) {
+ builder.privateAddresses(privateIpAddresses);
+ }
+ }
org.jclouds.azurecompute.arm.domain.Location myLocation = null;
- if (from.virtualMachine != null) {
- String locationName = from.virtualMachine.location();
+ if (from.virtualMachine() != null) {
+ String locationName = from.virtualMachine().location();
List<org.jclouds.azurecompute.arm.domain.Location> locations = api.getLocationApi().list();
for (org.jclouds.azurecompute.arm.domain.Location location : locations) {
@@ -189,7 +206,7 @@ public class DeploymentToNodeMetadata implements Function<VMDeployment, NodeMeta
Location jLocation = this.locationToLocation.apply(myLocation);
builder.location(jLocation);
- ImageReference imageReference = from.virtualMachine.properties().storageProfile().imageReference();
+ ImageReference imageReference = from.virtualMachine().properties().storageProfile().imageReference();
if (imageReference != null) {
VMImage vmImage = VMImage.create(imageReference.publisher(), imageReference.offer(), imageReference.sku(),
@@ -199,7 +216,7 @@ public class DeploymentToNodeMetadata implements Function<VMDeployment, NodeMeta
}
VMSize myVMSize = null;
- String vmSizeName = from.virtualMachine.properties().hardwareProfile().vmSize();
+ String vmSizeName = from.virtualMachine().properties().hardwareProfile().vmSize();
List<VMSize> vmSizes = api.getVMSizeApi(locationName).list();
for (VMSize vmSize : vmSizes) {
if (vmSize.name().equals(vmSizeName)) {
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/913e4be9/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VMDeployment.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VMDeployment.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VMDeployment.java
index c663944..948e69b 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VMDeployment.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VMDeployment.java
@@ -16,21 +16,43 @@
*/
package org.jclouds.azurecompute.arm.domain;
+import com.google.auto.value.AutoValue;
+import org.jclouds.javax.annotation.Nullable;
import java.util.List;
import java.util.Map;
-public class VMDeployment {
+@AutoValue
+public abstract class VMDeployment {
- public Deployment deployment;
+ public abstract Deployment deployment();
- public List<PublicIPAddress> ipAddressList;
+ @Nullable
+ public abstract List<PublicIPAddress> ipAddressList();
- public VirtualMachineInstance vm;
+ @Nullable
+ public abstract VirtualMachineInstance vm();
- public VirtualMachine virtualMachine;
+ @Nullable
+ public abstract VirtualMachine virtualMachine();
- public Map<String, String> userMetaData;
+ @Nullable
+ public abstract List<NetworkInterfaceCard> networkInterfaceCards();
- public Iterable<String> tags;
+ @Nullable
+ public abstract Map<String, String> userMetaData();
+
+ @Nullable
+ public abstract Iterable<String> tags();
+
+ public static VMDeployment create(Deployment deployment) {
+ return create(deployment, null, null, null, null, null, null);
+ }
+
+ public static VMDeployment create(Deployment deployment, List<PublicIPAddress> ipAddressList,
+ VirtualMachineInstance vm, VirtualMachine virtualMachine,
+ List<NetworkInterfaceCard> networkInterfaceCards, Map<String, String> userMetaData,
+ Iterable<String> tags) {
+ return new AutoValue_VMDeployment(deployment, ipAddressList, vm, virtualMachine, networkInterfaceCards, userMetaData, tags);
+ }
}
[4/4] jclouds-labs git commit: [JCLOUDS-1139] add an option to not
deallocate a VM when suspending
Posted by na...@apache.org.
[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 <lt...@redhat.com>
Authored: Thu Jul 14 15:48:37 2016 +0200
Committer: Ignasi Barrera <na...@apache.org>
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";
+
}
[2/4] jclouds-labs git commit: [JCLOUDS-1141] azurecompute - fix XML
generated by updateRole REST call
Posted by na...@apache.org.
[JCLOUDS-1141] azurecompute - fix XML generated by updateRole REST call
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/4e37f701
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/4e37f701
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/4e37f701
Branch: refs/heads/master
Commit: 4e37f701f6864439ff7c5a5480012903a0c97f73
Parents: 913e4be
Author: Josef Cacek <jc...@redhat.com>
Authored: Sat Jul 16 12:50:42 2016 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Sun Jul 17 23:30:03 2016 +0200
----------------------------------------------------------------------
.../jclouds/azurecompute/binders/RoleToXML.java | 17 +++++----
.../features/VirtualMachineApiMockTest.java | 14 +++++++-
.../src/test/resources/role-update-body.xml | 36 ++++++++++++++++++++
3 files changed, 59 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/4e37f701/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
index e5f1b26..7c8d529 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
@@ -24,6 +24,9 @@ import org.jclouds.rest.Binder;
import com.jamesmurty.utils.XMLBuilder;
+/**
+ * Generates XML request body for the <a href="https://msdn.microsoft.com/en-us/library/azure/jj157187.aspx">UpdateRole REST request</a>.
+ */
public class RoleToXML implements Binder {
@Override
@@ -32,14 +35,13 @@ public class RoleToXML implements Binder {
Role role = Role.class.cast(input);
try {
- XMLBuilder builder = XMLBuilder.create("PersistentVMRole", "http://schemas.microsoft.com/windowsazure")
- .e("RoleName").t(role.roleName()).up()
- .e("RoleType").t(role.roleType()).up()
- .e("ConfigurationSets");
-
+ XMLBuilder builder = XMLBuilder.create("PersistentVMRole", "http://schemas.microsoft.com/windowsazure");
+ builder.e("RoleName").t(role.roleName()).up()
+ .e("RoleType").t(role.roleType()).up();
+ XMLBuilder configSetsBuilder = builder.e("ConfigurationSets");
if (!role.configurationSets().isEmpty()) {
for (Role.ConfigurationSet configurationSet : role.configurationSets()) {
- XMLBuilder configBuilder = builder.e("ConfigurationSet"); // Network
+ XMLBuilder configBuilder = configSetsBuilder.e("ConfigurationSet"); // Network
configBuilder.e("ConfigurationSetType").t(configurationSet.configurationSetType()).up();
XMLBuilder inputEndpoints = configBuilder.e("InputEndpoints");
@@ -63,6 +65,7 @@ public class RoleToXML implements Binder {
}
}
}
+
builder.e("DataVirtualHardDisks").up()
.e("OSVirtualHardDisk")
.e("HostCaching").t(role.osVirtualHardDisk().hostCaching()).up()
@@ -70,7 +73,7 @@ public class RoleToXML implements Binder {
.e("MediaLink").t(role.osVirtualHardDisk().mediaLink().toString()).up()
.e("SourceImageName").t(role.osVirtualHardDisk().sourceImageName()).up()
.e("OS").t(role.osVirtualHardDisk().os().toString()).up()
- .up() // DataVirtualHardDisks
+ .up() // OSVirtualHardDisk
.e("RoleSize").t(role.roleSize().getText());
return (R) request.toBuilder().payload(builder.asString()).build();
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/4e37f701/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiMockTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiMockTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiMockTest.java
index 5bdd3a8..2272c70 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiMockTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiMockTest.java
@@ -18,12 +18,17 @@ package org.jclouds.azurecompute.features;
import static org.assertj.core.api.Assertions.assertThat;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+
import org.jclouds.azurecompute.domain.Role;
import org.jclouds.azurecompute.internal.BaseAzureComputeApiMockTest;
import org.jclouds.azurecompute.xml.RoleHandlerTest;
import org.testng.annotations.Test;
+import com.google.common.io.ByteStreams;
import com.squareup.okhttp.mockwebserver.MockWebServer;
+import com.squareup.okhttp.mockwebserver.RecordedRequest;
/*
* Note: Mock test for CaptureVMImage method is in VMImageApiMockTest class
@@ -109,7 +114,14 @@ public class VirtualMachineApiMockTest extends BaseAzureComputeApiMockTest {
Role role = RoleHandlerTest.expected();
assertThat(api.updateRole("testvnetsg02", role)).isEqualTo("request-1");
- assertSent(server, "PUT", "/services/hostedservices/my-service/deployments/mydeployment/roles/testvnetsg02");
+ RecordedRequest request = assertSent(server, "PUT", "/services/hostedservices/my-service/deployments/mydeployment/roles/testvnetsg02");
+
+ final InputStream is = getClass().getResourceAsStream("/role-update-body.xml");
+ try {
+ assertThat(request.getUtf8Body()).isXmlEqualTo(new String(ByteStreams.toByteArray(is), Charset.forName("UTF-8")));
+ } finally {
+ is.close();
+ }
} finally {
server.shutdown();
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/4e37f701/azurecompute/src/test/resources/role-update-body.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/role-update-body.xml b/azurecompute/src/test/resources/role-update-body.xml
new file mode 100644
index 0000000..c095352
--- /dev/null
+++ b/azurecompute/src/test/resources/role-update-body.xml
@@ -0,0 +1,36 @@
+<PersistentVMRole xmlns="http://schemas.microsoft.com/windowsazure">
+ <RoleName>testvnetsg02</RoleName>
+ <RoleType>PersistentVMRole</RoleType>
+ <ConfigurationSets>
+ <ConfigurationSet>
+ <ConfigurationSetType>NetworkConfiguration</ConfigurationSetType>
+ <InputEndpoints>
+ <InputEndpoint>
+ <LocalPort>5986</LocalPort>
+ <Name>PowerShell</Name>
+ <Port>5986</Port>
+ <Protocol>tcp</Protocol>
+ </InputEndpoint>
+ <InputEndpoint>
+ <LocalPort>3389</LocalPort>
+ <Name>Remote Desktop</Name>
+ <Port>59440</Port>
+ <Protocol>tcp</Protocol>
+ </InputEndpoint>
+ </InputEndpoints>
+ <SubnetNames>
+ <SubnetName>Subnet-1</SubnetName>
+ </SubnetNames>
+ <NetworkSecurityGroup>vnetnsgsg01</NetworkSecurityGroup>
+ </ConfigurationSet>
+ </ConfigurationSets>
+ <DataVirtualHardDisks />
+ <OSVirtualHardDisk>
+ <HostCaching>ReadWrite</HostCaching>
+ <DiskName>testvnetsg02-testvnetsg02-0-201502180825130518</DiskName>
+ <MediaLink>https://portalvhdsxz8nc6chc32j1.blob.core.windows.net/vhds/testvnetsg02-testvnetsg02-2015-02-18.vhd</MediaLink>
+ <SourceImageName>a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201412.01-en.us-127GB.vhd</SourceImageName>
+ <OS>WINDOWS</OS>
+ </OSVirtualHardDisk>
+ <RoleSize>Small</RoleSize>
+</PersistentVMRole>
[3/4] jclouds-labs git commit: [JCLOUDS-1142] add suport for
ProvisionGuestAgent configuration
Posted by na...@apache.org.
[JCLOUDS-1142] add suport for ProvisionGuestAgent configuration
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/e1c55b48
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/e1c55b48
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/e1c55b48
Branch: refs/heads/master
Commit: e1c55b481b1ffcc291b1c26cfe742f3c3db1696a
Parents: 4e37f70
Author: Josef Cacek <jc...@redhat.com>
Authored: Sun Jul 17 22:22:42 2016 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Sun Jul 17 23:30:08 2016 +0200
----------------------------------------------------------------------
.../binders/DeploymentParamsToXML.java | 33 +++++++++++---------
.../jclouds/azurecompute/binders/RoleToXML.java | 3 ++
.../compute/AzureComputeServiceAdapter.java | 1 +
.../options/AzureComputeTemplateOptions.java | 14 +++++++++
.../azurecompute/domain/DeploymentParams.java | 14 ++++++++-
.../src/test/resources/role-update-body.xml | 1 +
6 files changed, 51 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e1c55b48/azurecompute/src/main/java/org/jclouds/azurecompute/binders/DeploymentParamsToXML.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/DeploymentParamsToXML.java b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/DeploymentParamsToXML.java
index c220551..fbbdcd0 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/DeploymentParamsToXML.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/DeploymentParamsToXML.java
@@ -26,6 +26,9 @@ import org.jclouds.rest.Binder;
import com.jamesmurty.utils.XMLBuilder;
+/**
+ * Generates XML for <a href="https://msdn.microsoft.com/en-us/library/azure/jj157194.aspx">Create Virtual Machine Deployment</a> REST call.
+ */
public final class DeploymentParamsToXML implements Binder {
@Override
@@ -33,18 +36,19 @@ public final class DeploymentParamsToXML implements Binder {
DeploymentParams params = DeploymentParams.class.cast(input);
try {
- XMLBuilder builder = XMLBuilder.create("Deployment", "http://schemas.microsoft.com/windowsazure")
+ XMLBuilder deploymentBuilder = XMLBuilder.create("Deployment", "http://schemas.microsoft.com/windowsazure")
.e("Name").t(params.name()).up()
.e("DeploymentSlot").t("Production").up()
- .e("Label").t(params.name()).up()
+ .e("Label").t(params.name()).up();
+ XMLBuilder roleBuilder = deploymentBuilder
.e("RoleList")
.e("Role")
.e("RoleName").t(params.name()).up()
- .e("RoleType").t("PersistentVMRole").up()
- .e("ConfigurationSets");
+ .e("RoleType").t("PersistentVMRole").up();
+ XMLBuilder configSetsBuilder = roleBuilder.e("ConfigurationSets");
if (params.os() == OSImage.Type.WINDOWS) {
- XMLBuilder configBuilder = builder.e("ConfigurationSet"); // Windows
+ XMLBuilder configBuilder = configSetsBuilder.e("ConfigurationSet"); // Windows
configBuilder.e("ConfigurationSetType").t("WindowsProvisioningConfiguration").up()
.e("ComputerName").t(params.name()).up()
.e("AdminPassword").t(params.password()).up()
@@ -67,7 +71,7 @@ public final class DeploymentParamsToXML implements Binder {
.e("AdminPassword").t(params.username()).up()
.up(); // Windows ConfigurationSet
} else if (params.os() == OSImage.Type.LINUX) {
- XMLBuilder configBuilder = builder.e("ConfigurationSet"); // Linux
+ XMLBuilder configBuilder = configSetsBuilder.e("ConfigurationSet"); // Linux
configBuilder.e("ConfigurationSetType").t("LinuxProvisioningConfiguration").up()
.e("HostName").t(params.name()).up()
.e("UserName").t(params.username()).up()
@@ -81,7 +85,7 @@ public final class DeploymentParamsToXML implements Binder {
throw new IllegalArgumentException("Unrecognized os type " + params);
}
- XMLBuilder configBuilder = builder.e("ConfigurationSet"); // Network
+ XMLBuilder configBuilder = configSetsBuilder.e("ConfigurationSet"); // Network
configBuilder.e("ConfigurationSetType").t("NetworkConfiguration").up();
XMLBuilder inputEndpoints = configBuilder.e("InputEndpoints");
@@ -104,7 +108,7 @@ public final class DeploymentParamsToXML implements Binder {
}
}
- builder.up() //ConfigurationSets
+ roleBuilder
// TODO No Disk should be specified for a Role if using a VMImage
.e("DataVirtualHardDisks").up()
.e("OSVirtualHardDisk")
@@ -116,17 +120,18 @@ public final class DeploymentParamsToXML implements Binder {
.e("SourceImageName").t(params.sourceImageName()).up()
.e("OS").t(params.os() == LINUX ? "Linux" : "Windows").up()
.up() //OSVirtualHardDisk
- .e("RoleSize").t(params.size().getText()).up()
- .up() //Role
- .up(); //RoleList
+ .e("RoleSize").t(params.size().getText()).up();
+ if (params.provisionGuestAgent() != null) {
+ roleBuilder.e("ProvisionGuestAgent").t(params.provisionGuestAgent().toString()).up();
+ }
if (params.virtualNetworkName() != null) {
- builder.up().up().up().e("VirtualNetworkName").t(params.virtualNetworkName()).up();
+ configSetsBuilder.up().up().up().e("VirtualNetworkName").t(params.virtualNetworkName()).up();
}
if (params.reservedIPName() != null) {
- builder.up().up().up().e("ReservedIPName").t(params.reservedIPName()).up();
+ configSetsBuilder.up().up().up().e("ReservedIPName").t(params.reservedIPName()).up();
}
- return (R) request.toBuilder().payload(builder.asString()).build();
+ return (R) request.toBuilder().payload(configSetsBuilder.asString()).build();
} catch (Exception e) {
throw propagate(e);
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e1c55b48/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
index 7c8d529..9f77d76 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/RoleToXML.java
@@ -75,6 +75,9 @@ public class RoleToXML implements Binder {
.e("OS").t(role.osVirtualHardDisk().os().toString()).up()
.up() // OSVirtualHardDisk
.e("RoleSize").t(role.roleSize().getText());
+ if (role.provisionGuestAgent() != null) {
+ builder.e("ProvisionGuestAgent").t(role.provisionGuestAgent().toString()).up();
+ }
return (R) request.toBuilder().payload(builder.asString()).build();
} catch (Exception e) {
throw propagate(e);
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e1c55b48/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 7a65e6d..394dc65 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java
@@ -134,6 +134,7 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<Deploym
.externalEndpoints(externalEndpoints)
.virtualNetworkName(templateOptions.getVirtualNetworkName())
.subnetNames(templateOptions.getSubnetNames())
+ .provisionGuestAgent(templateOptions.getProvisionGuestAgent())
.build();
message = String.format("Creating a deployment with params '%s' ...", params);
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e1c55b48/azurecompute/src/main/java/org/jclouds/azurecompute/compute/options/AzureComputeTemplateOptions.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/options/AzureComputeTemplateOptions.java b/azurecompute/src/main/java/org/jclouds/azurecompute/compute/options/AzureComputeTemplateOptions.java
index ed31e71..3b80afd 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/options/AzureComputeTemplateOptions.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/compute/options/AzureComputeTemplateOptions.java
@@ -53,6 +53,7 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon
protected String storageAccountType;
protected String networkSecurityGroupName;
protected String reservedIPName;
+ protected Boolean provisionGuestAgent;
@Override
public AzureComputeTemplateOptions clone() {
@@ -73,6 +74,7 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon
eTo.storageAccountName(storageAccountName);
eTo.storageAccountType(storageAccountType);
eTo.reservedIPName(reservedIPName);
+ eTo.provisionGuestAgent(provisionGuestAgent);
}
}
@@ -91,6 +93,7 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon
if (storageAccountType != null ? !storageAccountType.equals(that.storageAccountType) : that.storageAccountType != null) return false;
if (subnetNames != null ? !subnetNames.equals(that.subnetNames) : that.subnetNames != null) return false;
if (virtualNetworkName != null ? !virtualNetworkName.equals(that.virtualNetworkName) : that.virtualNetworkName != null) return false;
+ if (provisionGuestAgent != null ? !provisionGuestAgent.equals(that.provisionGuestAgent) : that.provisionGuestAgent != null) return false;
return true;
}
@@ -104,6 +107,7 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon
result = 31 * result + (storageAccountType != null ? storageAccountType.hashCode() : 0);
result = 31 * result + (networkSecurityGroupName != null ? networkSecurityGroupName.hashCode() : 0);
result = 31 * result + (reservedIPName != null ? reservedIPName.hashCode() : 0);
+ result = 31 * result + (provisionGuestAgent != null ? provisionGuestAgent.hashCode() : 0);
return result;
}
@@ -116,6 +120,7 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon
.add("storageAccountType", storageAccountType)
.add("networkSecurityGroupName", networkSecurityGroupName)
.add("reservedIPName", reservedIPName)
+ .add("provisionGuestAgent", provisionGuestAgent)
.toString();
}
@@ -154,6 +159,11 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon
return this;
}
+ public AzureComputeTemplateOptions provisionGuestAgent(@Nullable Boolean provisionGuestAgent) {
+ this.provisionGuestAgent = provisionGuestAgent;
+ return this;
+ }
+
public String getVirtualNetworkName() {
return virtualNetworkName;
}
@@ -178,6 +188,10 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon
return reservedIPName;
}
+ public Boolean getProvisionGuestAgent() {
+ return provisionGuestAgent;
+ }
+
public static class Builder {
/**
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e1c55b48/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java
index 2cf93ad..5208d2d 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java
@@ -126,6 +126,16 @@ public abstract class DeploymentParams {
public abstract List<String> subnetNames();
+ /**
+ * Optional. Indicates whether the VM Agent is installed on the Virtual
+ * Machine. To run a resource extension in a Virtual Machine, this agent must
+ * be installed.
+ *
+ * @return provisionGuestAgent true/false flag (or null)
+ */
+ @Nullable
+ public abstract Boolean provisionGuestAgent();
+
public static Builder builder() {
return new AutoValue_DeploymentParams.Builder()
.externalEndpoints(ImmutableSet.<ExternalEndpoint> of())
@@ -147,6 +157,7 @@ public abstract class DeploymentParams {
public abstract Builder virtualNetworkName(String virtualNetworkName);
public abstract Builder reservedIPName(String reservedIPName);
public abstract Builder subnetNames(List<String> subnetNames);
+ public abstract Builder provisionGuestAgent(Boolean provisionGuestAgent);
abstract Set<ExternalEndpoint> externalEndpoints();
abstract List<String> subnetNames();
@@ -164,11 +175,12 @@ public abstract class DeploymentParams {
String password, String sourceImageName, URI mediaLink,
OSImage.Type os, Set<ExternalEndpoint> externalEndpoints,
String virtualNetworkName, String reservedIPName,
- List<String> subnetNames) {
+ List<String> subnetNames, Boolean provisionGuestAgent) {
return builder().name(name).size(size).username(username).password(password)
.sourceImageName(sourceImageName).mediaLink(mediaLink).os(os)
.externalEndpoints(externalEndpoints).virtualNetworkName(virtualNetworkName)
.reservedIPName(reservedIPName).subnetNames(subnetNames)
+ .provisionGuestAgent(provisionGuestAgent)
.build();
}
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e1c55b48/azurecompute/src/test/resources/role-update-body.xml
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/resources/role-update-body.xml b/azurecompute/src/test/resources/role-update-body.xml
index c095352..841ffb5 100644
--- a/azurecompute/src/test/resources/role-update-body.xml
+++ b/azurecompute/src/test/resources/role-update-body.xml
@@ -33,4 +33,5 @@
<OS>WINDOWS</OS>
</OSVirtualHardDisk>
<RoleSize>Small</RoleSize>
+ <ProvisionGuestAgent>true</ProvisionGuestAgent>
</PersistentVMRole>