JCLOUDS-1342 : Azure-ARM Virtual Machine Scale Set Support
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/7368d58a Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/7368d58a Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/7368d58a Branch: refs/heads/master Commit: 7368d58ad9534aaea2800860c07d311ff15d98d2 Parents: 8b33c44 Author: jucolon <[email protected]> Authored: Thu Aug 10 16:17:39 2017 -0400 Committer: Ignasi Barrera <[email protected]> Committed: Tue Nov 21 10:20:07 2017 +0100 ---------------------------------------------------------------------- .../azurecompute/arm/AzureComputeApi.java | 39 +- .../arm/AzureComputeProviderMetadata.java | 20 +- .../azurecompute/arm/domain/Extension.java | 40 ++ .../arm/domain/ExtensionProfile.java | 39 ++ .../arm/domain/ExtensionProfileSettings.java | 42 ++ .../arm/domain/ExtensionProperties.java | 70 +++ .../arm/domain/NetworkInterfaceCard.java | 3 +- .../domain/NetworkInterfaceCardProperties.java | 3 +- .../domain/NetworkInterfaceConfiguration.java | 44 ++ ...NetworkInterfaceConfigurationProperties.java | 68 +++ .../domain/NetworkSecurityGroupProperties.java | 3 +- .../azurecompute/arm/domain/VirtualMachine.java | 16 +- .../arm/domain/VirtualMachineScaleSet.java | 110 +++++ .../VirtualMachineScaleSetDNSSettings.java | 41 ++ .../VirtualMachineScaleSetIpConfiguration.java | 61 +++ ...achineScaleSetIpConfigurationProperties.java | 118 +++++ .../VirtualMachineScaleSetNetworkProfile.java | 58 +++ ...tualMachineScaleSetNetworkSecurityGroup.java | 39 ++ .../domain/VirtualMachineScaleSetOSProfile.java | 277 ++++++++++++ .../arm/domain/VirtualMachineScaleSetPlan.java | 51 +++ .../VirtualMachineScaleSetProperties.java | 106 +++++ ...ineScaleSetPublicIPAddressConfiguration.java | 59 +++ ...achineScaleSetPublicIPAddressProperties.java | 54 +++ .../arm/domain/VirtualMachineScaleSetSKU.java | 45 ++ .../VirtualMachineScaleSetUpgradeMode.java | 35 ++ .../VirtualMachineScaleSetUpgradePolicy.java | 35 ++ ...ualMachineScaleSetVirtualMachineProfile.java | 83 ++++ .../arm/features/VirtualMachineScaleSetApi.java | 88 ++++ .../VirtualMachineScaleSetApiLiveTest.java | 297 ++++++++++++ .../VirtualMachineScaleSetApiMockTest.java | 453 +++++++++++++++++++ .../internal/BaseAzureComputeApiMockTest.java | 1 + .../src/test/resources/virtualmachine.json | 1 - .../resources/virtualmachinescalesetget.json | 64 +++ .../virtualmachinescalesetgetwhen404.json | 6 + .../resources/virtualmachinescalesetlist.json | 93 ++++ .../virtualmachinescalesetlistwhen404.json | 6 + ...almachinescalesetresponsecreateorupdate.json | 103 +++++ 37 files changed, 2635 insertions(+), 36 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeApi.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeApi.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeApi.java index 123f6e3..8623580 100644 --- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeApi.java +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeApi.java @@ -20,27 +20,28 @@ import java.io.Closeable; import javax.ws.rs.PathParam; -import org.jclouds.azurecompute.arm.features.AvailabilitySetApi; -import org.jclouds.azurecompute.arm.features.DeploymentApi; -import org.jclouds.azurecompute.arm.features.DiskApi; -import org.jclouds.azurecompute.arm.features.ImageApi; import org.jclouds.azurecompute.arm.features.JobApi; -import org.jclouds.azurecompute.arm.features.LoadBalancerApi; import org.jclouds.azurecompute.arm.features.LocationApi; -import org.jclouds.azurecompute.arm.features.MetricDefinitionsApi; -import org.jclouds.azurecompute.arm.features.MetricsApi; -import org.jclouds.azurecompute.arm.features.NetworkInterfaceCardApi; -import org.jclouds.azurecompute.arm.features.NetworkSecurityGroupApi; -import org.jclouds.azurecompute.arm.features.NetworkSecurityRuleApi; -import org.jclouds.azurecompute.arm.features.OSImageApi; -import org.jclouds.azurecompute.arm.features.PublicIPAddressApi; import org.jclouds.azurecompute.arm.features.ResourceGroupApi; -import org.jclouds.azurecompute.arm.features.ResourceProviderApi; import org.jclouds.azurecompute.arm.features.StorageAccountApi; import org.jclouds.azurecompute.arm.features.SubnetApi; -import org.jclouds.azurecompute.arm.features.VMSizeApi; -import org.jclouds.azurecompute.arm.features.VirtualMachineApi; import org.jclouds.azurecompute.arm.features.VirtualNetworkApi; +import org.jclouds.azurecompute.arm.features.NetworkInterfaceCardApi; +import org.jclouds.azurecompute.arm.features.PublicIPAddressApi; +import org.jclouds.azurecompute.arm.features.VirtualMachineApi; +import org.jclouds.azurecompute.arm.features.VirtualMachineScaleSetApi; +import org.jclouds.azurecompute.arm.features.VMSizeApi; +import org.jclouds.azurecompute.arm.features.OSImageApi; +import org.jclouds.azurecompute.arm.features.DeploymentApi; +import org.jclouds.azurecompute.arm.features.NetworkSecurityGroupApi; +import org.jclouds.azurecompute.arm.features.NetworkSecurityRuleApi; +import org.jclouds.azurecompute.arm.features.LoadBalancerApi; +import org.jclouds.azurecompute.arm.features.AvailabilitySetApi; +import org.jclouds.azurecompute.arm.features.ResourceProviderApi; +import org.jclouds.azurecompute.arm.features.DiskApi; +import org.jclouds.azurecompute.arm.features.ImageApi; +import org.jclouds.azurecompute.arm.features.MetricsApi; +import org.jclouds.azurecompute.arm.features.MetricDefinitionsApi; import org.jclouds.rest.annotations.Delegate; /** @@ -125,6 +126,14 @@ public interface AzureComputeApi extends Closeable { VirtualMachineApi getVirtualMachineApi(@PathParam("resourceGroup") String resourceGroup); /** + * The Virtual Machine Scale Set API includes operations for managing the virtual machines in your subscription. + * + * @see <a href="https://msdn.microsoft.com/en-us/library/azure/mt163630.aspx">docs</a> + */ + @Delegate + VirtualMachineScaleSetApi getVirtualMachineScaleSetApi(@PathParam("resourceGroup") String resourceGroup); + + /** * This Azure Resource Manager API lists all available virtual machine sizes for a subscription in a given region * * @see <a href="https://msdn.microsoft.com/en-us/library/azure/mt269440.aspx">docs</a> http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeProviderMetadata.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeProviderMetadata.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeProviderMetadata.java index eb52746..8849a1f 100644 --- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeProviderMetadata.java +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeProviderMetadata.java @@ -38,26 +38,27 @@ import java.net.URI; import java.util.Properties; import org.jclouds.azurecompute.arm.domain.Region; -import org.jclouds.azurecompute.arm.features.AvailabilitySetApi; import org.jclouds.azurecompute.arm.features.DeploymentApi; -import org.jclouds.azurecompute.arm.features.ImageApi; -import org.jclouds.azurecompute.arm.features.LoadBalancerApi; import org.jclouds.azurecompute.arm.features.LocationApi; -import org.jclouds.azurecompute.arm.features.DiskApi; -import org.jclouds.azurecompute.arm.features.MetricDefinitionsApi; -import org.jclouds.azurecompute.arm.features.MetricsApi; import org.jclouds.azurecompute.arm.features.NetworkInterfaceCardApi; import org.jclouds.azurecompute.arm.features.NetworkSecurityGroupApi; import org.jclouds.azurecompute.arm.features.NetworkSecurityRuleApi; import org.jclouds.azurecompute.arm.features.OSImageApi; -import org.jclouds.azurecompute.arm.features.PublicIPAddressApi; import org.jclouds.azurecompute.arm.features.ResourceGroupApi; +import org.jclouds.azurecompute.arm.features.PublicIPAddressApi; import org.jclouds.azurecompute.arm.features.ResourceProviderApi; import org.jclouds.azurecompute.arm.features.StorageAccountApi; import org.jclouds.azurecompute.arm.features.SubnetApi; +import org.jclouds.azurecompute.arm.features.VirtualNetworkApi; import org.jclouds.azurecompute.arm.features.VMSizeApi; import org.jclouds.azurecompute.arm.features.VirtualMachineApi; -import org.jclouds.azurecompute.arm.features.VirtualNetworkApi; +import org.jclouds.azurecompute.arm.features.LoadBalancerApi; +import org.jclouds.azurecompute.arm.features.AvailabilitySetApi; +import org.jclouds.azurecompute.arm.features.DiskApi; +import org.jclouds.azurecompute.arm.features.ImageApi; +import org.jclouds.azurecompute.arm.features.MetricDefinitionsApi; +import org.jclouds.azurecompute.arm.features.MetricsApi; +import org.jclouds.azurecompute.arm.features.VirtualMachineScaleSetApi; import org.jclouds.providers.ProviderMetadata; import org.jclouds.providers.internal.BaseProviderMetadata; @@ -122,7 +123,8 @@ public class AzureComputeProviderMetadata extends BaseProviderMetadata { properties.put(API_VERSION_PREFIX + ImageApi.class.getSimpleName(), "2016-04-30-preview"); properties.put(API_VERSION_PREFIX + MetricDefinitionsApi.class.getSimpleName(), "2017-05-01-preview"); properties.put(API_VERSION_PREFIX + MetricsApi.class.getSimpleName(), "2016-09-01"); - + properties.put(API_VERSION_PREFIX + VirtualMachineScaleSetApi.class.getSimpleName(), "2017-03-30"); + return properties; } http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Extension.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Extension.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Extension.java new file mode 100644 index 0000000..5eafb04 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Extension.java @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.json.SerializedNames; + +@AutoValue +public abstract class Extension { + + /** + * The name reference of the extension profile + */ + public abstract String name(); + + /** + * The properties reference of the extension profile + */ + public abstract ExtensionProperties properties(); + + + @SerializedNames({"name", "properties"}) + public static Extension create(final String name, final ExtensionProperties properties) { + return new AutoValue_Extension(name, properties); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProfile.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProfile.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProfile.java new file mode 100644 index 0000000..92ab4fb --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProfile.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableList; +import org.jclouds.json.SerializedNames; + +import java.util.List; + +@AutoValue +public abstract class ExtensionProfile { + + /** + * The list of extensions of the extension profile + */ + public abstract List<Extension> extensions(); + + + @SerializedNames({"extensions"}) + public static ExtensionProfile create(final List<Extension> extensions) { + return new AutoValue_ExtensionProfile(extensions == null ? + ImmutableList.<Extension>of() : ImmutableList.copyOf(extensions)); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProfileSettings.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProfileSettings.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProfileSettings.java new file mode 100644 index 0000000..265bf76 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProfileSettings.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableList; +import org.jclouds.json.SerializedNames; + +import java.util.List; + +@AutoValue +public abstract class ExtensionProfileSettings { + + /** + * The fileUris reference of the extension profile settings + */ + public abstract List<String> fileUris(); + + /** + * The commandToExecute of the extension profile settings + */ + public abstract String commandToExecute(); + + @SerializedNames({"fileUris", "commandToExecute"}) + public static ExtensionProfileSettings create(final List<String> fileUris, final String commandToExecute) { + return new AutoValue_ExtensionProfileSettings(fileUris == null ? ImmutableList.<String>of() : ImmutableList.copyOf(fileUris), commandToExecute); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProperties.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProperties.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProperties.java new file mode 100644 index 0000000..d4e8b7f --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ExtensionProperties.java @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableMap; +import org.jclouds.json.SerializedNames; + +import java.util.Map; + +@AutoValue +public abstract class ExtensionProperties { + + /** + * The publisher reference of the extension properties + */ + public abstract String publisher(); + + /** + * The type reference of the extension properties + */ + public abstract String type(); + + /** + * The typeHandlerVersion reference of the extension properties + */ + public abstract String typeHandlerVersion(); + + /** + * The autoUpgradeMinorVersion reference of the extension properties + */ + public abstract Boolean autoUpgradeMinorVersion(); + + /** + * The ExtensionProfileSettings of the extension properties + */ + public abstract ExtensionProfileSettings settings(); + + /** + * The list of the protectedSettings of the extension properties + */ + public abstract Map<String, String> protectedSettings(); + + @SerializedNames({ "publisher", "type", "typeHandlerVersion", + "autoUpgradeMinorVersion", "settings", "protectedSettings"}) + public static ExtensionProperties create(final String publisher, String type, + final String typeHandlerVersion, + final Boolean autoUpgradeMinorVersion, + final ExtensionProfileSettings settings, + final Map<String, String> protectedSettings) { + return new AutoValue_ExtensionProperties(publisher, type, typeHandlerVersion, autoUpgradeMinorVersion, + settings, protectedSettings == null ? + ImmutableMap.<String, String>of() : ImmutableMap.copyOf(protectedSettings)); + } +} + http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCard.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCard.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCard.java index 567addc..66bc1a3 100644 --- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCard.java +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCard.java @@ -51,6 +51,7 @@ public abstract class NetworkInterfaceCard { final String location, final NetworkInterfaceCardProperties properties, final Map<String, String> tags) { - return new AutoValue_NetworkInterfaceCard(name, id, etag, location, properties, tags == null ? null : ImmutableMap.copyOf(tags)); + return new AutoValue_NetworkInterfaceCard(name, id, etag, location, properties, + tags != null ? ImmutableMap.copyOf(tags) : null); } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCardProperties.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCardProperties.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCardProperties.java index 84c8ca2..680d0a2 100644 --- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCardProperties.java +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCardProperties.java @@ -32,7 +32,8 @@ public abstract class NetworkInterfaceCardProperties implements Provisionable { @Nullable public abstract List<IpConfiguration> ipConfigurations(); @Nullable public abstract IdReference networkSecurityGroup(); - @SerializedNames({"provisioningState", "resourceGuid", "enableIPForwarding", "ipConfigurations", "networkSecurityGroup"}) + @SerializedNames({"provisioningState", "resourceGuid", "enableIPForwarding", "ipConfigurations", + "networkSecurityGroup"}) public static NetworkInterfaceCardProperties create(final String provisioningState, final String resourceGuid, final Boolean enableIPForwarding, final List<IpConfiguration> ipConfigurations, final IdReference networkSecurityGroup) { http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceConfiguration.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceConfiguration.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceConfiguration.java new file mode 100644 index 0000000..b2e81b2 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceConfiguration.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +@AutoValue +public abstract class NetworkInterfaceConfiguration { + /** + * The name of the NetworkInterfaceConfiguration + */ + @Nullable + public abstract String name(); + + /** + * The networkConfigurationProperties of the NetworkInterfaceConfiguration + */ + @Nullable + public abstract NetworkInterfaceConfigurationProperties networkInterfaceConfigurationProperties(); + + @SerializedNames({"name", "properties"}) + public static NetworkInterfaceConfiguration create( + final String name, NetworkInterfaceConfigurationProperties networkInterfaceConfigurationProperties) { + + return new AutoValue_NetworkInterfaceConfiguration(name, networkInterfaceConfigurationProperties); + } + +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceConfigurationProperties.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceConfigurationProperties.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceConfigurationProperties.java new file mode 100644 index 0000000..85518b8 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceConfigurationProperties.java @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +import java.util.List; + + +@AutoValue +public abstract class NetworkInterfaceConfigurationProperties { + /** + * The primary of the NetworkInterfaceConfigurationProperties + */ + @Nullable + public abstract Boolean primary(); + + /** + * The enableAcceleratedNetworking of the NetworkInterfaceConfigurationProperties + */ + @Nullable + public abstract Boolean enableAcceleratedNetworking(); + + /** + * The networkSecurityGroup of the NetworkInterfaceConfigurationProperties + */ + @Nullable + public abstract VirtualMachineScaleSetNetworkSecurityGroup networkSecurityGroup(); + + /** + * The dnsSettings of the NetworkInterfaceConfigurationProperties + */ + @Nullable + public abstract VirtualMachineScaleSetDNSSettings dnsSettings(); + + /** + * The ipConfigurations of the NetworkInterfaceConfigurationProperties + */ + public abstract List<VirtualMachineScaleSetIpConfiguration> ipConfigurations(); + + + @SerializedNames({"primary", "enableAcceleratedNetworking", "networkSecurityGroup", "dnsSettings", "ipConfigurations"}) + public static NetworkInterfaceConfigurationProperties create(final Boolean primary, + final Boolean enableAcceleratedNetworking, + final VirtualMachineScaleSetNetworkSecurityGroup networkSecurityGroup, + final VirtualMachineScaleSetDNSSettings dnsSettings, + final List<VirtualMachineScaleSetIpConfiguration> ipConfigurations) { + + return new AutoValue_NetworkInterfaceConfigurationProperties(primary, enableAcceleratedNetworking, + networkSecurityGroup, dnsSettings, ipConfigurations); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityGroupProperties.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityGroupProperties.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityGroupProperties.java index bbc2746..60fb2e6 100644 --- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityGroupProperties.java +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityGroupProperties.java @@ -45,7 +45,8 @@ public abstract class NetworkSecurityGroupProperties implements Provisionable { @Nullable public abstract String provisioningState(); - @SerializedNames({"securityRules", "defaultSecurityRules", "networkInterfaces", "subnets", "resourceGuid", "provisioningState"}) + @SerializedNames({"securityRules", "defaultSecurityRules", "networkInterfaces", "subnets", "resourceGuid", + "provisioningState"}) public static NetworkSecurityGroupProperties create(final List<NetworkSecurityRule> securityRules, final List<NetworkSecurityRule> defaultSecurityRules, final List<NetworkInterfaceCard> networkInterfaces, http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachine.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachine.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachine.java index 86810e5..c0224f3 100644 --- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachine.java +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachine.java @@ -60,7 +60,7 @@ public abstract class VirtualMachine { * Specifies the properties of the vm */ public abstract VirtualMachineProperties properties(); - + /** * Specifies the plan, for marketplace images */ @@ -69,20 +69,20 @@ public abstract class VirtualMachine { @SerializedNames({"id", "name", "type", "location", "tags", "properties", "plan"}) public static VirtualMachine create(final String id, final String name, final String type, final String location, - @Nullable final Map<String, String> tags, VirtualMachineProperties properties, @Nullable Plan plan) { + @Nullable final Map<String, String> tags, VirtualMachineProperties properties, @Nullable Plan plan) { return builder().id(id).name(name).type(type).location(location).tags(tags).properties(properties).plan(plan) - .build(); + .build(); } - + public abstract Builder toBuilder(); - + public static Builder builder() { return new AutoValue_VirtualMachine.Builder(); } - + @AutoValue.Builder public abstract static class Builder { - + public abstract Builder id(String id); public abstract Builder name(String name); public abstract Builder type(String type); @@ -90,7 +90,7 @@ public abstract class VirtualMachine { public abstract Builder tags(Map<String, String> tags); public abstract Builder properties(VirtualMachineProperties properties); public abstract Builder plan(Plan plan); - + abstract Map<String, String> tags(); abstract VirtualMachine autoBuild(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSet.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSet.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSet.java new file mode 100644 index 0000000..2fc3f59 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSet.java @@ -0,0 +1,110 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableMap; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +import java.util.Map; + +/** + * VirtualMachineScaleSet for subscription + */ +@AutoValue +public abstract class VirtualMachineScaleSet { + + /** + * The id of the virtual machine scale set + */ + @Nullable + public abstract String id(); + + /** + * The name of the virtual machine scale set + */ + @Nullable + public abstract String name(); + + /** + * The location of the virtual machine scale set + */ + @Nullable + public abstract String location(); + + /** + * Specifies the sku of the virtual machine scale set + */ + public abstract VirtualMachineScaleSetSKU sku(); + + /** + * Specifies the tags of the virtual machine scale set + */ + @Nullable + public abstract Map<String, String> tags(); + + + /** + * Specifies the optional plan of the virtual machine scale set (only for market image) + */ + @Nullable + public abstract VirtualMachineScaleSetPlan plan(); + + /** + * Specifies the properties of the availability set + */ + @Nullable + public abstract VirtualMachineScaleSetProperties properties(); + + @SerializedNames({ "id", "name", "location", "sku", "tags", "plan", "properties"}) + public static VirtualMachineScaleSet create(final String id, final String name, final String location, + VirtualMachineScaleSetSKU sku, final Map<String, String> tags, + VirtualMachineScaleSetPlan plan, + VirtualMachineScaleSetProperties properties) { + return builder().id(id).name(name).location(location).sku(sku).tags(tags) + .plan(plan).properties(properties) + .build(); + } + + public abstract Builder toBuilder(); + + private static Builder builder() { + return new AutoValue_VirtualMachineScaleSet.Builder(); + } + + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder id(String id); + public abstract Builder name(String name); + public abstract Builder location(String location); + public abstract Builder sku(VirtualMachineScaleSetSKU sku); + public abstract Builder tags(Map<String, String> tags); + public abstract Builder plan(VirtualMachineScaleSetPlan plan); + public abstract Builder properties(VirtualMachineScaleSetProperties properties); + + abstract Map<String, String> tags(); + abstract VirtualMachineScaleSet autoBuild(); + + public VirtualMachineScaleSet build() { + tags(tags() != null ? ImmutableMap.copyOf(tags()) : null); + return autoBuild(); + } + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetDNSSettings.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetDNSSettings.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetDNSSettings.java new file mode 100644 index 0000000..d91c68b --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetDNSSettings.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableList; +import org.jclouds.json.SerializedNames; + +import java.util.List; + +/** + * VirtualMachineScaleSetDNSSettings + */ +@AutoValue +public abstract class VirtualMachineScaleSetDNSSettings { + /** + * The list of DNS servers of the Virtual Machine Scale Set DNS Settings + */ + public abstract List<String> dnsServers(); + + @SerializedNames({"dnsServers"}) + public static VirtualMachineScaleSetDNSSettings create(final List<String> dnsServers) { + + return new AutoValue_VirtualMachineScaleSetDNSSettings( + dnsServers == null ? ImmutableList.<String>of() : ImmutableList.copyOf(dnsServers)); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetIpConfiguration.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetIpConfiguration.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetIpConfiguration.java new file mode 100644 index 0000000..257072e --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetIpConfiguration.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +@AutoValue +public abstract class VirtualMachineScaleSetIpConfiguration { + + /** + * The name of the Virtual Machine Scale Set Ip Configuration + */ + @Nullable + public abstract String name(); + + /** + * The properties of the Virtual Machine Scale Set Ip Configuration + */ + @Nullable + public abstract VirtualMachineScaleSetIpConfigurationProperties properties(); + + @SerializedNames({"name", "properties"}) + public static VirtualMachineScaleSetIpConfiguration create( + final String name, + final VirtualMachineScaleSetIpConfigurationProperties properties) { + return builder() + .name(name) + .properties(properties) + .build(); + } + + public abstract Builder toBuilder(); + + public static Builder builder() { + return new AutoValue_VirtualMachineScaleSetIpConfiguration.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder name(String name); + public abstract Builder properties(VirtualMachineScaleSetIpConfigurationProperties properties); + public abstract VirtualMachineScaleSetIpConfiguration build(); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetIpConfigurationProperties.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetIpConfigurationProperties.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetIpConfigurationProperties.java new file mode 100644 index 0000000..ee23152 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetIpConfigurationProperties.java @@ -0,0 +1,118 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableList; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +import java.util.List; + +@AutoValue +public abstract class VirtualMachineScaleSetIpConfigurationProperties { + + /** + * The public IP address configuration of the Virtual Machine Scale Set Ip Configuration Properties + */ + @Nullable + public abstract VirtualMachineScaleSetPublicIPAddressConfiguration publicIPAddressConfiguration(); + + /** + * The subnet of the Virtual Machine Scale Set Ip Configuration Properties + */ + public abstract Subnet subnet(); + + /** + * The private IP address version of the Virtual Machine Scale Set Ip Configuration Properties + */ + @Nullable + public abstract String privateIPAddressVersion(); + + /** + * The load balancer backend address pools of the Virtual Machine Scale Set Ip Configuration Properties + */ + public abstract List<IdReference> loadBalancerBackendAddressPools(); + + /** + * The load balancer inbound nat pools of the Virtual Machine Scale Set Ip Configuration Properties + */ + public abstract List<IdReference> loadBalancerInboundNatPools(); + + /** + * The application gateway backend address Pools of the Virtual Machine Scale Set Ip Configuration Properties + */ + @Nullable + public abstract String applicationGatewayBackendAddressPools(); + + @SerializedNames({"publicIPAddressConfiguration", "subnet", "privateIPAddressVersion", + "loadBalancerBackendAddressPools", "loadBalancerInboundNatPools", "applicationGatewayBackendAddressPools"}) + public static VirtualMachineScaleSetIpConfigurationProperties create( + final VirtualMachineScaleSetPublicIPAddressConfiguration publicIPAddressConfiguration, + final Subnet subnet, + final String privateIPAddressVersion, + final List<IdReference> loadBalancerBackendAddressPools, + final List<IdReference> loadBalancerInboundNatPools, + final String applicationGatewayBackendAddressPools) + + { + + return builder() + .publicIPAddressConfiguration(publicIPAddressConfiguration) + .subnet(subnet) + .privateIPAddressVersion(privateIPAddressVersion) + .lbBackendAddressPools(loadBalancerBackendAddressPools) + .lbInboundNatPools(loadBalancerInboundNatPools) + .applicationGatewayBackendAddressPools(applicationGatewayBackendAddressPools) + .build(); + } + + public abstract Builder toBuilder(); + + public static Builder builder() { + return new AutoValue_VirtualMachineScaleSetIpConfigurationProperties.Builder() + .lbBackendAddressPools(null) + .lbInboundNatPools(null); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder publicIPAddressConfiguration(VirtualMachineScaleSetPublicIPAddressConfiguration publicIPAddressConfiguration); + + public abstract Builder subnet(Subnet subnet); + + public abstract Builder loadBalancerBackendAddressPools(List<IdReference> loadBalancerBackendAddressPools); + + public abstract Builder loadBalancerInboundNatPools(List<IdReference> loadBalancerInboundNatPools); + + public abstract Builder privateIPAddressVersion(String privateIPAddressVersion); + + public Builder lbBackendAddressPools(List<IdReference> loadBalancerBackendAddressPools) { + return loadBalancerBackendAddressPools(loadBalancerBackendAddressPools != null ? ImmutableList + .copyOf(loadBalancerBackendAddressPools) : ImmutableList.<IdReference>of()); + } + public Builder lbInboundNatPools(List<IdReference> loadBalancerInboundNatPools) { + return loadBalancerInboundNatPools(loadBalancerInboundNatPools != null ? ImmutableList + .copyOf(loadBalancerInboundNatPools) : ImmutableList.<IdReference>of()); + } + + public abstract Builder applicationGatewayBackendAddressPools(String applicationGatewayBackendAddressPools); + public abstract VirtualMachineScaleSetIpConfigurationProperties build(); + + } +} + http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetNetworkProfile.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetNetworkProfile.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetNetworkProfile.java new file mode 100644 index 0000000..9d4c462 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetNetworkProfile.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableList; +import org.jclouds.json.SerializedNames; + +import java.util.List; + +@AutoValue +public abstract class VirtualMachineScaleSetNetworkProfile { + + /** + * The network interface configurations of the Virtual Machine Scale Set Network Profile + */ + public abstract List<NetworkInterfaceConfiguration> networkInterfaceConfigurations(); + + + @SerializedNames({"networkInterfaceConfigurations"}) + public static VirtualMachineScaleSetNetworkProfile create( + final List<NetworkInterfaceConfiguration> networkInterfaceConfigurations) { + return builder() + .networkInterfaceConfigurations(networkInterfaceConfigurations == null ? + ImmutableList.<NetworkInterfaceConfiguration>of() : ImmutableList.copyOf(networkInterfaceConfigurations) ) + .build(); + } + + public abstract Builder toBuilder(); + + public static Builder builder() { + return new AutoValue_VirtualMachineScaleSetNetworkProfile.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + + public abstract Builder networkInterfaceConfigurations( + List<NetworkInterfaceConfiguration> networkInterfaceConfigurations); + + public abstract VirtualMachineScaleSetNetworkProfile build(); + + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetNetworkSecurityGroup.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetNetworkSecurityGroup.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetNetworkSecurityGroup.java new file mode 100644 index 0000000..8874d50 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetNetworkSecurityGroup.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +/** + * Virtual Machine Scale Set Network Security Group + */ +@AutoValue +public abstract class VirtualMachineScaleSetNetworkSecurityGroup { + /** + * The id of the Virtual Machine Scale Set Network Security Group + */ + @Nullable + public abstract String id(); + + @SerializedNames({"id"}) + public static VirtualMachineScaleSetNetworkSecurityGroup create(final String id) { + + return new AutoValue_VirtualMachineScaleSetNetworkSecurityGroup(id); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetOSProfile.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetOSProfile.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetOSProfile.java new file mode 100644 index 0000000..5593457 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetOSProfile.java @@ -0,0 +1,277 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableList; +import org.jclouds.azurecompute.arm.util.GetEnumValue; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +import java.util.List; + +@AutoValue +public abstract class VirtualMachineScaleSetOSProfile { + + @AutoValue + public abstract static class LinuxConfiguration { + + + @AutoValue + public abstract static class SSH { + + @AutoValue + public abstract static class SSHPublicKey { + + /** + * The path for the SSH public key + */ + @Nullable + public abstract String path(); + + /** + * The key data for the SSH public key + */ + @Nullable + public abstract String keyData(); + + @SerializedNames({"path", "keyData"}) + public static SSHPublicKey create(final String path, final String keyData) { + + return new AutoValue_VirtualMachineScaleSetOSProfile_LinuxConfiguration_SSH_SSHPublicKey( + path, keyData); + } + } + + /** + * The list of public keys and paths + */ + @Nullable + public abstract List<SSHPublicKey> publicKeys(); + + @SerializedNames({"publicKeys"}) + public static SSH create(final List<SSHPublicKey> publicKeys) { + + return new AutoValue_VirtualMachineScaleSetOSProfile_LinuxConfiguration_SSH( + publicKeys); + } + } + + /** + * The authentication method password or ssh + */ + public abstract Boolean disablePasswordAuthentication(); + + /** + * ssh keys + */ + @Nullable + public abstract SSH ssh(); + + @SerializedNames({"disablePasswordAuthentication", "ssh"}) + public static LinuxConfiguration create(final Boolean disablePasswordAuthentication, + final SSH ssh) { + + return new AutoValue_VirtualMachineScaleSetOSProfile_LinuxConfiguration(disablePasswordAuthentication, + ssh); + } + } + + @AutoValue + public abstract static class WindowsConfiguration { + + @AutoValue + public abstract static class WinRM { + public enum Protocol { + + HTTP("http"), + HTTPS("https"), + UNRECOGNIZED("Unrecognized"); + + private String value; + + Protocol(String value) { + this.value = value; + } + + public static Protocol fromValue(String value) { + return (Protocol) GetEnumValue.fromValueOrDefault(value, Protocol.UNRECOGNIZED); + } + + @Override + public String toString() { + return this.value; + } + } + + @AutoValue + public abstract static class ProtocolListener { + + /** + * The protocol for the protcol listener + */ + public abstract Protocol protocol(); + + /** + * The certificate url or the protcol listener + */ + @Nullable + public abstract String certificateUrl(); + + @SerializedNames({"protocol", "certificateUrl"}) + public static ProtocolListener create(final Protocol protocol, final String certificateUrl) { + + return new AutoValue_VirtualMachineScaleSetOSProfile_WindowsConfiguration_WinRM_ProtocolListener( + protocol, certificateUrl); + } + } + + /** + * Map of different settings + */ + public abstract List<ProtocolListener> listeners(); + + @SerializedNames({"listeners"}) + public static WinRM create(final List<ProtocolListener> listeners) { + return new AutoValue_VirtualMachineScaleSetOSProfile_WindowsConfiguration_WinRM(listeners == null ? ImmutableList.<ProtocolListener>of() : ImmutableList.copyOf(listeners)); + } + } + + @AutoValue + public abstract static class AdditionalUnattendContent { + + public abstract String pass(); + + public abstract String component(); + + public abstract String settingName(); + + public abstract String content(); + + @SerializedNames({"pass", "component", "settingName", "content"}) + public static AdditionalUnattendContent create(final String pass, final String component, + final String settingName, + final String content) { + + return new AutoValue_VirtualMachineScaleSetOSProfile_WindowsConfiguration_AdditionalUnattendContent( + pass, component, settingName, content); + } + } + + /** + * The provision VM Agent true of false. + */ + public abstract boolean provisionVMAgent(); + + /** + * winRM + */ + @Nullable + public abstract WinRM winRM(); + + /** + * unattend content + */ + public abstract List<AdditionalUnattendContent> additionalUnattendContent(); + + /** + * is automatic updates enabled + */ + public abstract boolean enableAutomaticUpdates(); + + @SerializedNames({"provisionVMAgent", "winRM", "additionalUnattendContent", "enableAutomaticUpdates"}) + public static WindowsConfiguration create(final boolean provisionVMAgent, final WinRM winRM, + final List<AdditionalUnattendContent> additionalUnattendContent, + final boolean enableAutomaticUpdates) { + + return new AutoValue_VirtualMachineScaleSetOSProfile_WindowsConfiguration(provisionVMAgent, winRM, + additionalUnattendContent == null ? ImmutableList.<AdditionalUnattendContent>of() : ImmutableList.copyOf(additionalUnattendContent), enableAutomaticUpdates); + } + } + + /** + * The computer name of the VM + */ + @Nullable + public abstract String computerNamePrefix(); + + /** + * The admin username of the VM + */ + @Nullable + public abstract String adminUsername(); + + /** + * The admin password of the VM + */ + @Nullable + public abstract String adminPassword(); + + /** + * The linux configuration of the VM + */ + @Nullable + public abstract LinuxConfiguration linuxConfiguration(); + + /** + * The windows configuration of the VM + */ + @Nullable + public abstract WindowsConfiguration windowsConfiguration(); + + /** + * The Secrets configuration of the VM + */ + public abstract List<Secrets> secrets(); + + @SerializedNames({"computerNamePrefix", "adminUsername", "adminPassword", "linuxConfiguration", + "windowsConfiguration", "secrets"}) + public static VirtualMachineScaleSetOSProfile create(final String computerNamePrefix, final String adminUsername, + final String adminPassword, final LinuxConfiguration linuxConfiguration, + final WindowsConfiguration windowsConfiguration, final List<Secrets> secrets) { + return builder() + .computerNamePrefix(computerNamePrefix) + .adminUsername(adminUsername) + .adminPassword(adminPassword) + .linuxConfiguration(linuxConfiguration) + .windowsConfiguration(windowsConfiguration) + ._secrets(secrets) + .build(); + } + + public abstract Builder toBuilder(); + + public static Builder builder() { + return new AutoValue_VirtualMachineScaleSetOSProfile.Builder()._secrets(null); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder computerNamePrefix(String computerNamePrefix); + public abstract Builder adminUsername(String adminUsername); + public abstract Builder adminPassword(String adminPassword); + public abstract Builder linuxConfiguration(LinuxConfiguration linuxConfiguration); + public abstract Builder windowsConfiguration(WindowsConfiguration windowsConfiguration); + public abstract Builder secrets(List<Secrets> secrets); + + public Builder _secrets(List<Secrets> secrets) { + return secrets(secrets != null ? ImmutableList.copyOf(secrets) : ImmutableList.<Secrets>of()); + } + + public abstract VirtualMachineScaleSetOSProfile build(); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPlan.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPlan.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPlan.java new file mode 100644 index 0000000..1864ca7 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPlan.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +/** + * SKU + */ +@AutoValue +public abstract class VirtualMachineScaleSetPlan { + /** + * The name of the Virtual Machine Scale Set Plan + */ + @Nullable + public abstract String name(); + + /** + * The publisher of the Virtual Machine Scale Set Plan + */ + @Nullable + public abstract String publisher(); + + /** + * The product of the Virtual Machine Scale Set Plan + */ + @Nullable + public abstract String product(); + + @SerializedNames({"name", "publisher", "product"}) + public static VirtualMachineScaleSetPlan create(final String name, final String publisher, final String product) { + + return new AutoValue_VirtualMachineScaleSetPlan(name, publisher, product); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetProperties.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetProperties.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetProperties.java new file mode 100644 index 0000000..d737086 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetProperties.java @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.azurecompute.arm.util.GetEnumValue; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + + +@AutoValue +public abstract class VirtualMachineScaleSetProperties { + + public enum ProvisioningState { + ACCEPTED, + CREATING, + READY, + CANCELED, + FAILED, + DELETED, + SUCCEEDED, + RUNNING, + UPDATING, + UNRECOGNIZED; + + public static ProvisioningState fromValue(final String text) { + return (ProvisioningState) GetEnumValue.fromValueOrDefault(text, ProvisioningState.UNRECOGNIZED); + } + } + + /** + * The singlePlacementGroup of the VirtualMachineScaleSetProperties + */ + @Nullable + public abstract Boolean singlePlacementGroup(); + + /** + * Specifies the over provision of the virtual machine scale set + */ + @Nullable + public abstract Boolean overProvision(); + + /** + * Specifies the upgrade policy of the virtual machine scale set + */ + public abstract VirtualMachineScaleSetUpgradePolicy upgradePolicy(); + + /** + * Specifies the state of the provision of the virtual machine scale set + */ + @Nullable + public abstract ProvisioningState provisioningState(); + + /** + * Specifies the virtual machine profile of the virtual machine scale set + */ + public abstract VirtualMachineScaleSetVirtualMachineProfile virtualMachineProfile(); + + @SerializedNames({"singlePlacementGroup", "overProvision", "upgradePolicy", "provisioningState", "virtualMachineProfile"}) + public static VirtualMachineScaleSetProperties create( + final Boolean singlePlacementGroup, + final Boolean overProvision, + final VirtualMachineScaleSetUpgradePolicy upgradePolicy, + final ProvisioningState provisioningState, + final VirtualMachineScaleSetVirtualMachineProfile virtualMachineProfile) { + return builder().singlePlacementGroup(singlePlacementGroup).overProvision(overProvision). + upgradePolicy(upgradePolicy).provisioningState(provisioningState).virtualMachineProfile(virtualMachineProfile).build(); + } + + public abstract Builder toBuilder(); + + private static Builder builder() { + return new AutoValue_VirtualMachineScaleSetProperties.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder singlePlacementGroup(Boolean singlePlacementGroup); + + public abstract Builder overProvision(Boolean overProvision); + + public abstract Builder upgradePolicy(VirtualMachineScaleSetUpgradePolicy upgradePolicy); + + public abstract Builder provisioningState(ProvisioningState provisioningState); + + public abstract Builder virtualMachineProfile(VirtualMachineScaleSetVirtualMachineProfile virtualMachineProfile); + + public abstract VirtualMachineScaleSetProperties build(); + } +} + + http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPublicIPAddressConfiguration.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPublicIPAddressConfiguration.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPublicIPAddressConfiguration.java new file mode 100644 index 0000000..3347713 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPublicIPAddressConfiguration.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.json.SerializedNames; + +@AutoValue +public abstract class VirtualMachineScaleSetPublicIPAddressConfiguration { + + /** + * The name of the Virtual Machine Scale Set Public IP Address Configuration + */ + public abstract String name(); + + /** + * The properties of the Virtual Machine Scale Set Public IP Address Configuration + */ + public abstract VirtualMachineScaleSetPublicIPAddressProperties properties(); + + @SerializedNames({ "name", "properties" }) + public static VirtualMachineScaleSetPublicIPAddressConfiguration create( + String name, + VirtualMachineScaleSetPublicIPAddressProperties properties) { + return builder().name(name).properties(properties).build(); + } + + VirtualMachineScaleSetPublicIPAddressConfiguration() { + + } + + public abstract Builder toBuilder(); + + public static Builder builder() { + return new AutoValue_VirtualMachineScaleSetPublicIPAddressConfiguration.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder name(String name); + public abstract Builder properties(VirtualMachineScaleSetPublicIPAddressProperties properties); + public abstract VirtualMachineScaleSetPublicIPAddressConfiguration build(); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPublicIPAddressProperties.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPublicIPAddressProperties.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPublicIPAddressProperties.java new file mode 100644 index 0000000..d01e305 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetPublicIPAddressProperties.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +@AutoValue +public abstract class VirtualMachineScaleSetPublicIPAddressProperties { + + /** + * The idle timeout (in minutes) of the Virtual Machine Scale Set Public IP Address Configuration + */ + @Nullable + public abstract Integer idleTimeoutInMinutes(); + + + @SerializedNames({ "idleTimeoutInMinutes" }) + public static VirtualMachineScaleSetPublicIPAddressProperties create(final Integer idleTimeoutInMinutes) { + return builder() + .idleTimeoutInMinutes(idleTimeoutInMinutes) + .build(); + } + + public abstract Builder toBuilder(); + + public static Builder builder() { + return new AutoValue_VirtualMachineScaleSetPublicIPAddressProperties.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + + public abstract Builder idleTimeoutInMinutes(Integer idleTimeoutInMinutes); + + public abstract VirtualMachineScaleSetPublicIPAddressProperties build(); + } + +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetSKU.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetSKU.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetSKU.java new file mode 100644 index 0000000..251562d --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetSKU.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.json.SerializedNames; + + +@AutoValue +public abstract class VirtualMachineScaleSetSKU { + /** + * The name of the Virtual Machine Scale Set SKU + */ + public abstract String name(); + + /** + * The tier of the Virtual Machine Scale Set SKU + */ + public abstract String tier(); + + /** + * The capacity of the Virtual Machine Scale Set SKU + */ + public abstract int capacity(); + + @SerializedNames({"name", "tier", "capacity"}) + public static VirtualMachineScaleSetSKU create(final String name, final String tier, final int capacity) { + + return new AutoValue_VirtualMachineScaleSetSKU(name, tier, capacity); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetUpgradeMode.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetUpgradeMode.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetUpgradeMode.java new file mode 100644 index 0000000..cca007f --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetUpgradeMode.java @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import org.jclouds.azurecompute.arm.util.GetEnumValue; + + +public class VirtualMachineScaleSetUpgradeMode { + /** + * VirtualMachineScaleSetUpgradeMode + * **/ + public enum Status { + Manual, + Automatic, + Unrecognized; + + public static Status fromValue(final String text) { + return (Status) GetEnumValue.fromValueOrDefault(text, Status.Unrecognized); + } + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetUpgradePolicy.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetUpgradePolicy.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetUpgradePolicy.java new file mode 100644 index 0000000..6945e81 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetUpgradePolicy.java @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.json.SerializedNames; + + +@AutoValue +public abstract class VirtualMachineScaleSetUpgradePolicy { + /** + * The mode of the Virtual Machine Scale Set Upgrade Policy + */ + public abstract String mode(); + + @SerializedNames({"mode"}) + public static VirtualMachineScaleSetUpgradePolicy create(final String mode) { + + return new AutoValue_VirtualMachineScaleSetUpgradePolicy(mode); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/7368d58a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetVirtualMachineProfile.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetVirtualMachineProfile.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetVirtualMachineProfile.java new file mode 100644 index 0000000..a238467 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineScaleSetVirtualMachineProfile.java @@ -0,0 +1,83 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.auto.value.AutoValue; +import org.jclouds.json.SerializedNames; + +/** + * A virtual machine properties for the virtual machine. + */ +@AutoValue +public abstract class VirtualMachineScaleSetVirtualMachineProfile { + + /** + * The storage profile of the Virtual Machine Scale Set Virtual Machine Profile. + */ + public abstract StorageProfile storageProfile(); + + /** + * The OS profile of the Virtual Machine Scale Set Virtual Machine Profile. + */ + public abstract VirtualMachineScaleSetOSProfile osProfile(); + + /** + * The network profile of the Virtual Machine Scale Set Virtual Machine Profile + */ + public abstract VirtualMachineScaleSetNetworkProfile networkProfile(); + + /** + * The extension profile of the Virtual Machine Scale Set Virtual Machine Profile . + */ + public abstract ExtensionProfile extensionProfile(); + + + + @SerializedNames({"storageProfile", "osProfile", "networkProfile", "extensionProfile"}) + public static VirtualMachineScaleSetVirtualMachineProfile create( + final StorageProfile storageProfile, + final VirtualMachineScaleSetOSProfile osProfile, + final VirtualMachineScaleSetNetworkProfile networkProfile, + final ExtensionProfile extensionProfile) { + return builder() + .storageProfile(storageProfile) + .osProfile(osProfile) + .networkProfile(networkProfile) + .extensionProfile(extensionProfile) + .build(); + } + + public abstract Builder toBuilder(); + + public static Builder builder() { + return new AutoValue_VirtualMachineScaleSetVirtualMachineProfile.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + + public abstract Builder storageProfile(StorageProfile storageProfile); + + public abstract Builder osProfile(VirtualMachineScaleSetOSProfile osProfile); + + public abstract Builder networkProfile(VirtualMachineScaleSetNetworkProfile networkProfile); + + public abstract Builder extensionProfile(ExtensionProfile extensionProfile); + + public abstract VirtualMachineScaleSetVirtualMachineProfile build(); + } +}
