Repository: jclouds-labs Updated Branches: refs/heads/2.0.x c6e590c30 -> 69ef87654
Azurecompute (Classic) - additional templateOptions for WindowsProvisioningConfiguration Listener protocol flag allowing https usage. Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/69ef8765 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/69ef8765 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/69ef8765 Branch: refs/heads/2.0.x Commit: 69ef87654a0b3e52ecdd65530e21f982bbb510f4 Parents: c6e590c Author: Valentin Aitken <[email protected]> Authored: Sat Mar 18 09:33:39 2017 +0200 Committer: Andrea Turli <[email protected]> Committed: Mon Mar 20 16:21:03 2017 +0100 ---------------------------------------------------------------------- .../azurecompute/binders/DeploymentParamsToXML.java | 3 ++- .../compute/AzureComputeServiceAdapter.java | 9 ++++++--- .../compute/options/AzureComputeTemplateOptions.java | 13 ++++++++++++- .../jclouds/azurecompute/domain/DeploymentParams.java | 8 ++++++++ .../src/test/resources/deploymentparams-windows.xml | 2 +- 5 files changed, 29 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/69ef8765/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 fbbdcd0..d890ebe 100644 --- a/azurecompute/src/main/java/org/jclouds/azurecompute/binders/DeploymentParamsToXML.java +++ b/azurecompute/src/main/java/org/jclouds/azurecompute/binders/DeploymentParamsToXML.java @@ -49,6 +49,7 @@ public final class DeploymentParamsToXML implements Binder { if (params.os() == OSImage.Type.WINDOWS) { XMLBuilder configBuilder = configSetsBuilder.e("ConfigurationSet"); // Windows + final String listenerProtocol = params.winrmUseHttps() != null && params.winrmUseHttps() ? "Https" : "Http"; configBuilder.e("ConfigurationSetType").t("WindowsProvisioningConfiguration").up() .e("ComputerName").t(params.name()).up() .e("AdminPassword").t(params.password()).up() @@ -66,7 +67,7 @@ public final class DeploymentParamsToXML implements Binder { .e("WinRM") .e("Listeners") .e("Listener") - .e("Protocol").t("http").up().up().up().up() + .e("Protocol").t(listenerProtocol).up().up().up().up() .e("AdminUsername").t(params.username()).up() .e("AdminPassword").t(params.username()).up() .up(); // Windows ConfigurationSet http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/69ef8765/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 ea579de..7241cc7 100644 --- a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java +++ b/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java @@ -124,7 +124,7 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<Deploym externalEndpoints.add(ExternalEndpoint.inboundTcpToLocalPort(inboundPort, inboundPort)); } - final DeploymentParams params = DeploymentParams.builder() + final DeploymentParams.Builder paramsBuilder = DeploymentParams.builder() .name(name) .os(os) .username(loginUser) @@ -135,8 +135,11 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<Deploym .externalEndpoints(externalEndpoints) .virtualNetworkName(templateOptions.getVirtualNetworkName()) .subnetNames(templateOptions.getSubnetNames()) - .provisionGuestAgent(templateOptions.getProvisionGuestAgent()) - .build(); + .provisionGuestAgent(templateOptions.getProvisionGuestAgent()); + if (os.equals(OSImage.Type.WINDOWS)) { + paramsBuilder.winrmUseHttps(templateOptions.getWinrmUseHttps()); + } + final DeploymentParams params = paramsBuilder.build(); message = String.format("Creating a deployment with params '%s' ...", params); logger.debug(message); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/69ef8765/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 3b80afd..6fb95e5 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 @@ -54,6 +54,7 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon protected String networkSecurityGroupName; protected String reservedIPName; protected Boolean provisionGuestAgent; + protected Boolean winrmUseHttps; @Override public AzureComputeTemplateOptions clone() { @@ -75,6 +76,7 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon eTo.storageAccountType(storageAccountType); eTo.reservedIPName(reservedIPName); eTo.provisionGuestAgent(provisionGuestAgent); + eTo.winrmUseHttps(winrmUseHttps); } } @@ -94,7 +96,7 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon 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; - + if (winrmUseHttps != null ? !winrmUseHttps.equals(that.winrmUseHttps) : that.winrmUseHttps != null) return false; return true; } @@ -164,6 +166,11 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon return this; } + public AzureComputeTemplateOptions winrmUseHttps(@Nullable Boolean winrmUseHttps) { + this.winrmUseHttps = winrmUseHttps; + return this; + } + public String getVirtualNetworkName() { return virtualNetworkName; } @@ -192,6 +199,10 @@ public class AzureComputeTemplateOptions extends TemplateOptions implements Clon return provisionGuestAgent; } + public Boolean getWinrmUseHttps() { + return winrmUseHttps; + } + public static class Builder { /** http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/69ef8765/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 5208d2d..5d0e5e6 100644 --- a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java +++ b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java @@ -136,6 +136,13 @@ public abstract class DeploymentParams { @Nullable public abstract Boolean provisionGuestAgent(); + /** + * Optional. Indicates whether Windows VM should be provisioned with Https WinRm listener. + * By default it will use http listener. + */ + @Nullable + public abstract Boolean winrmUseHttps(); + public static Builder builder() { return new AutoValue_DeploymentParams.Builder() .externalEndpoints(ImmutableSet.<ExternalEndpoint> of()) @@ -150,6 +157,7 @@ public abstract class DeploymentParams { public abstract Builder size(RoleSize.Type roleSize); public abstract Builder username(String username); public abstract Builder password(String password); + public abstract Builder winrmUseHttps(Boolean useHttps); public abstract Builder sourceImageName(String sourceImageName); public abstract Builder mediaLink(URI mediaLink); public abstract Builder os(OSImage.Type os); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/69ef8765/azurecompute/src/test/resources/deploymentparams-windows.xml ---------------------------------------------------------------------- diff --git a/azurecompute/src/test/resources/deploymentparams-windows.xml b/azurecompute/src/test/resources/deploymentparams-windows.xml index 6a54e1f..a60c2e5 100644 --- a/azurecompute/src/test/resources/deploymentparams-windows.xml +++ b/azurecompute/src/test/resources/deploymentparams-windows.xml @@ -1 +1 @@ -<Deployment xmlns="http://schemas.microsoft.com/windowsazure"><Name>mydeployment</Name><DeploymentSlot>Production</DeploymentSlot><Label>mydeployment</Label><RoleList><Role><RoleName>mydeployment</RoleName><RoleType>PersistentVMRole</RoleType><ConfigurationSets><ConfigurationSet><ConfigurationSetType>WindowsProvisioningConfiguration</ConfigurationSetType><ComputerName>mydeployment</ComputerName><AdminPassword>testpwd</AdminPassword><ResetPasswordOnFirstLogon>false</ResetPasswordOnFirstLogon><EnableAutomaticUpdate>false</EnableAutomaticUpdate><DomainJoin><Credentials><Domain>mydeployment</Domain><Username>username</Username><Password>testpwd</Password></Credentials><JoinDomain>mydeployment</JoinDomain></DomainJoin><StoredCertificateSettings/><WinRM><Listeners><Listener><Protocol>http</Protocol></Listener></Listeners></WinRM><AdminUsername>username</AdminUsername><AdminPassword>username</AdminPassword></ConfigurationSet><ConfigurationSet><ConfigurationSetType>NetworkConfiguration</Con figurationSetType><InputEndpoints><InputEndpoint><LocalPort>8080</LocalPort><Name>tcp_80-8080</Name><Port>80</Port><Protocol>tcp</Protocol></InputEndpoint><InputEndpoint><LocalPort>53</LocalPort><Name>udp_53-53</Name><Port>53</Port><Protocol>udp</Protocol></InputEndpoint></InputEndpoints><SubnetNames/></ConfigurationSet></ConfigurationSets><DataVirtualHardDisks/><OSVirtualHardDisk><HostCaching>ReadWrite</HostCaching><MediaLink>http://blobs/disks/mydeployment/MSFT__Win2K8R2SP1-120612-1520-121206-01-en-us-30GB.vhd</MediaLink><SourceImageName>MSFT__Win2K8R2SP1-120612-1520-121206-01-en-us-30GB.vhd</SourceImageName><OS>Windows</OS></OSVirtualHardDisk><RoleSize>Medium</RoleSize></Role></RoleList><VirtualNetworkName>my-virtualNetworkName</VirtualNetworkName></Deployment> +<Deployment xmlns="http://schemas.microsoft.com/windowsazure"><Name>mydeployment</Name><DeploymentSlot>Production</DeploymentSlot><Label>mydeployment</Label><RoleList><Role><RoleName>mydeployment</RoleName><RoleType>PersistentVMRole</RoleType><ConfigurationSets><ConfigurationSet><ConfigurationSetType>WindowsProvisioningConfiguration</ConfigurationSetType><ComputerName>mydeployment</ComputerName><AdminPassword>testpwd</AdminPassword><ResetPasswordOnFirstLogon>false</ResetPasswordOnFirstLogon><EnableAutomaticUpdate>false</EnableAutomaticUpdate><DomainJoin><Credentials><Domain>mydeployment</Domain><Username>username</Username><Password>testpwd</Password></Credentials><JoinDomain>mydeployment</JoinDomain></DomainJoin><StoredCertificateSettings/><WinRM><Listeners><Listener><Protocol>Http</Protocol></Listener></Listeners></WinRM><AdminUsername>username</AdminUsername><AdminPassword>username</AdminPassword></ConfigurationSet><ConfigurationSet><ConfigurationSetType>NetworkConfiguration</Con figurationSetType><InputEndpoints><InputEndpoint><LocalPort>8080</LocalPort><Name>tcp_80-8080</Name><Port>80</Port><Protocol>tcp</Protocol></InputEndpoint><InputEndpoint><LocalPort>53</LocalPort><Name>udp_53-53</Name><Port>53</Port><Protocol>udp</Protocol></InputEndpoint></InputEndpoints><SubnetNames/></ConfigurationSet></ConfigurationSets><DataVirtualHardDisks/><OSVirtualHardDisk><HostCaching>ReadWrite</HostCaching><MediaLink>http://blobs/disks/mydeployment/MSFT__Win2K8R2SP1-120612-1520-121206-01-en-us-30GB.vhd</MediaLink><SourceImageName>MSFT__Win2K8R2SP1-120612-1520-121206-01-en-us-30GB.vhd</SourceImageName><OS>Windows</OS></OSVirtualHardDisk><RoleSize>Medium</RoleSize></Role></RoleList><VirtualNetworkName>my-virtualNetworkName</VirtualNetworkName></Deployment>
