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:17 UTC
[3/4] jclouds-labs git commit: [JCLOUDS-1142] add suport for
ProvisionGuestAgent configuration
[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>