You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2018/01/08 14:52:58 UTC
[37/50] [abbrv] jclouds git commit: JCLOUDS-1342 : Azure-ARM Virtual
Machine Scale Set Support
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 <ju...@microsoft.com>
Authored: Thu Aug 10 16:17:39 2017 -0400
Committer: Ignasi Barrera <na...@apache.org>
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();
+ }
+}