diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/pom.xml b/sdk/devtestlabs/mgmt-v2016_05_15/pom.xml
new file mode 100644
index 000000000000..0ef21177527c
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/pom.xml
@@ -0,0 +1,135 @@
+
+
+ 4.0.0
+ com.microsoft.azure.devtestlabs.v2016_05_15
+
+ com.microsoft.azure
+ azure-arm-parent
+ 1.1.0
+ ../../../pom.management.xml
+
+ azure-mgmt-devtestlabs
+ 1.0.0-beta
+ jar
+ Microsoft Azure SDK for DevTestLabs Management
+ This package contains Microsoft DevTestLabs Management SDK.
+ https://github.com/Azure/azure-sdk-for-java
+
+
+ The MIT License (MIT)
+ http://opensource.org/licenses/MIT
+ repo
+
+
+
+ scm:git:https://github.com/Azure/azure-sdk-for-java
+ scm:git:git@github.com:Azure/azure-sdk-for-java.git
+ HEAD
+
+
+ UTF-8
+
+
+
+
+ microsoft
+ Microsoft
+
+
+
+
+ com.microsoft.azure
+ azure-client-runtime
+
+
+ com.microsoft.azure
+ azure-arm-client-runtime
+
+
+ junit
+ junit
+ test
+
+
+ com.microsoft.azure
+ azure-client-authentication
+ test
+
+
+ com.microsoft.azure
+ azure-mgmt-resources
+ test
+
+
+ com.microsoft.azure
+ azure-arm-client-runtime
+ test-jar
+ test
+
+ 1.6.5
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ true
+ true
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.1
+
+ 1.7
+ 1.7
+
+
+ com.microsoft.azure.management.apigeneration.LangDefinitionProcessor
+
+
+ true
+ true
+
+ true
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.8
+
+ *.implementation.*;*.utils.*;com.microsoft.schemas._2003._10.serialization;*.blob.core.search
+
+
+ /**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ */
+ ]]>
+
+
+
+
+
+
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ApplicableSchedule.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ApplicableSchedule.java
new file mode 100644
index 000000000000..1c47bfaff007
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ApplicableSchedule.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ApplicableScheduleInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ScheduleInner;
+import java.util.Map;
+
+/**
+ * Type representing ApplicableSchedule.
+ */
+public interface ApplicableSchedule extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the labVmsShutdown value.
+ */
+ ScheduleInner labVmsShutdown();
+
+ /**
+ * @return the labVmsStartup value.
+ */
+ ScheduleInner labVmsStartup();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ApplicableScheduleFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ApplicableScheduleFragment.java
new file mode 100644
index 000000000000..375f6d2a2cae
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ApplicableScheduleFragment.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.rest.SkipParentValidation;
+import com.microsoft.azure.Resource;
+
+/**
+ * Schedules applicable to a virtual machine. The schedules may have been
+ * defined on a VM or on lab level.
+ */
+@JsonFlatten
+@SkipParentValidation
+public class ApplicableScheduleFragment extends Resource {
+ /**
+ * The auto-shutdown schedule, if one has been set at the lab or lab
+ * resource level.
+ */
+ @JsonProperty(value = "properties.labVmsShutdown")
+ private ScheduleFragment labVmsShutdown;
+
+ /**
+ * The auto-startup schedule, if one has been set at the lab or lab
+ * resource level.
+ */
+ @JsonProperty(value = "properties.labVmsStartup")
+ private ScheduleFragment labVmsStartup;
+
+ /**
+ * Get the auto-shutdown schedule, if one has been set at the lab or lab resource level.
+ *
+ * @return the labVmsShutdown value
+ */
+ public ScheduleFragment labVmsShutdown() {
+ return this.labVmsShutdown;
+ }
+
+ /**
+ * Set the auto-shutdown schedule, if one has been set at the lab or lab resource level.
+ *
+ * @param labVmsShutdown the labVmsShutdown value to set
+ * @return the ApplicableScheduleFragment object itself.
+ */
+ public ApplicableScheduleFragment withLabVmsShutdown(ScheduleFragment labVmsShutdown) {
+ this.labVmsShutdown = labVmsShutdown;
+ return this;
+ }
+
+ /**
+ * Get the auto-startup schedule, if one has been set at the lab or lab resource level.
+ *
+ * @return the labVmsStartup value
+ */
+ public ScheduleFragment labVmsStartup() {
+ return this.labVmsStartup;
+ }
+
+ /**
+ * Set the auto-startup schedule, if one has been set at the lab or lab resource level.
+ *
+ * @param labVmsStartup the labVmsStartup value to set
+ * @return the ApplicableScheduleFragment object itself.
+ */
+ public ApplicableScheduleFragment withLabVmsStartup(ScheduleFragment labVmsStartup) {
+ this.labVmsStartup = labVmsStartup;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ApplyArtifactsRequest.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ApplyArtifactsRequest.java
new file mode 100644
index 000000000000..04defa4538f2
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ApplyArtifactsRequest.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Request body for applying artifacts to a virtual machine.
+ */
+public class ApplyArtifactsRequest {
+ /**
+ * The list of artifacts to apply.
+ */
+ @JsonProperty(value = "artifacts")
+ private List artifacts;
+
+ /**
+ * Get the list of artifacts to apply.
+ *
+ * @return the artifacts value
+ */
+ public List artifacts() {
+ return this.artifacts;
+ }
+
+ /**
+ * Set the list of artifacts to apply.
+ *
+ * @param artifacts the artifacts value to set
+ * @return the ApplyArtifactsRequest object itself.
+ */
+ public ApplyArtifactsRequest withArtifacts(List artifacts) {
+ this.artifacts = artifacts;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplate.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplate.java
new file mode 100644
index 000000000000..b8f4a077806f
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplate.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ArmTemplateInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import org.joda.time.DateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Type representing ArmTemplate.
+ */
+public interface ArmTemplate extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the contents value.
+ */
+ Object contents();
+
+ /**
+ * @return the createdDate value.
+ */
+ DateTime createdDate();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the displayName value.
+ */
+ String displayName();
+
+ /**
+ * @return the icon value.
+ */
+ String icon();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the parametersValueFilesInfo value.
+ */
+ List parametersValueFilesInfo();
+
+ /**
+ * @return the publisher value.
+ */
+ String publisher();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplateInfo.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplateInfo.java
new file mode 100644
index 000000000000..f942fbe845c8
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplateInfo.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ArmTemplateInfoInner;
+
+/**
+ * Type representing ArmTemplateInfo.
+ */
+public interface ArmTemplateInfo extends HasInner, HasManager {
+ /**
+ * @return the parameters value.
+ */
+ Object parameters();
+
+ /**
+ * @return the template value.
+ */
+ Object template();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplateParameterProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplateParameterProperties.java
new file mode 100644
index 000000000000..f963e6346171
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplateParameterProperties.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of an Azure Resource Manager template parameter.
+ */
+public class ArmTemplateParameterProperties {
+ /**
+ * The name of the template parameter.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * The value of the template parameter.
+ */
+ @JsonProperty(value = "value")
+ private String value;
+
+ /**
+ * Get the name of the template parameter.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the template parameter.
+ *
+ * @param name the name value to set
+ * @return the ArmTemplateParameterProperties object itself.
+ */
+ public ArmTemplateParameterProperties withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the value of the template parameter.
+ *
+ * @return the value value
+ */
+ public String value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value of the template parameter.
+ *
+ * @param value the value value to set
+ * @return the ArmTemplateParameterProperties object itself.
+ */
+ public ArmTemplateParameterProperties withValue(String value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplates.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplates.java
new file mode 100644
index 000000000000..2196ec4ad5ef
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArmTemplates.java
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ArmTemplatesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ArmTemplates.
+ */
+public interface ArmTemplates extends HasInner {
+ /**
+ * Get azure resource manager template.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @param name The name of the azure Resource Manager template.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String labName, String artifactSourceName, String name);
+
+ /**
+ * List azure resource manager templates in a given artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String labName, final String artifactSourceName);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Artifact.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Artifact.java
new file mode 100644
index 000000000000..f6a129ed75cd
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Artifact.java
@@ -0,0 +1,89 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ArtifactInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import org.joda.time.DateTime;
+import java.util.Map;
+
+/**
+ * Type representing Artifact.
+ */
+public interface Artifact extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the createdDate value.
+ */
+ DateTime createdDate();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the filePath value.
+ */
+ String filePath();
+
+ /**
+ * @return the icon value.
+ */
+ String icon();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the parameters value.
+ */
+ Object parameters();
+
+ /**
+ * @return the publisher value.
+ */
+ String publisher();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the targetOsType value.
+ */
+ String targetOsType();
+
+ /**
+ * @return the title value.
+ */
+ String title();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactDeploymentStatusProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactDeploymentStatusProperties.java
new file mode 100644
index 000000000000..6c3ba6a0c6d0
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactDeploymentStatusProperties.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of an artifact deployment.
+ */
+public class ArtifactDeploymentStatusProperties {
+ /**
+ * The deployment status of the artifact.
+ */
+ @JsonProperty(value = "deploymentStatus")
+ private String deploymentStatus;
+
+ /**
+ * The total count of the artifacts that were successfully applied.
+ */
+ @JsonProperty(value = "artifactsApplied")
+ private Integer artifactsApplied;
+
+ /**
+ * The total count of the artifacts that were tentatively applied.
+ */
+ @JsonProperty(value = "totalArtifacts")
+ private Integer totalArtifacts;
+
+ /**
+ * Get the deployment status of the artifact.
+ *
+ * @return the deploymentStatus value
+ */
+ public String deploymentStatus() {
+ return this.deploymentStatus;
+ }
+
+ /**
+ * Set the deployment status of the artifact.
+ *
+ * @param deploymentStatus the deploymentStatus value to set
+ * @return the ArtifactDeploymentStatusProperties object itself.
+ */
+ public ArtifactDeploymentStatusProperties withDeploymentStatus(String deploymentStatus) {
+ this.deploymentStatus = deploymentStatus;
+ return this;
+ }
+
+ /**
+ * Get the total count of the artifacts that were successfully applied.
+ *
+ * @return the artifactsApplied value
+ */
+ public Integer artifactsApplied() {
+ return this.artifactsApplied;
+ }
+
+ /**
+ * Set the total count of the artifacts that were successfully applied.
+ *
+ * @param artifactsApplied the artifactsApplied value to set
+ * @return the ArtifactDeploymentStatusProperties object itself.
+ */
+ public ArtifactDeploymentStatusProperties withArtifactsApplied(Integer artifactsApplied) {
+ this.artifactsApplied = artifactsApplied;
+ return this;
+ }
+
+ /**
+ * Get the total count of the artifacts that were tentatively applied.
+ *
+ * @return the totalArtifacts value
+ */
+ public Integer totalArtifacts() {
+ return this.totalArtifacts;
+ }
+
+ /**
+ * Set the total count of the artifacts that were tentatively applied.
+ *
+ * @param totalArtifacts the totalArtifacts value to set
+ * @return the ArtifactDeploymentStatusProperties object itself.
+ */
+ public ArtifactDeploymentStatusProperties withTotalArtifacts(Integer totalArtifacts) {
+ this.totalArtifacts = totalArtifacts;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactDeploymentStatusPropertiesFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactDeploymentStatusPropertiesFragment.java
new file mode 100644
index 000000000000..4df624feb052
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactDeploymentStatusPropertiesFragment.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of an artifact deployment.
+ */
+public class ArtifactDeploymentStatusPropertiesFragment {
+ /**
+ * The deployment status of the artifact.
+ */
+ @JsonProperty(value = "deploymentStatus")
+ private String deploymentStatus;
+
+ /**
+ * The total count of the artifacts that were successfully applied.
+ */
+ @JsonProperty(value = "artifactsApplied")
+ private Integer artifactsApplied;
+
+ /**
+ * The total count of the artifacts that were tentatively applied.
+ */
+ @JsonProperty(value = "totalArtifacts")
+ private Integer totalArtifacts;
+
+ /**
+ * Get the deployment status of the artifact.
+ *
+ * @return the deploymentStatus value
+ */
+ public String deploymentStatus() {
+ return this.deploymentStatus;
+ }
+
+ /**
+ * Set the deployment status of the artifact.
+ *
+ * @param deploymentStatus the deploymentStatus value to set
+ * @return the ArtifactDeploymentStatusPropertiesFragment object itself.
+ */
+ public ArtifactDeploymentStatusPropertiesFragment withDeploymentStatus(String deploymentStatus) {
+ this.deploymentStatus = deploymentStatus;
+ return this;
+ }
+
+ /**
+ * Get the total count of the artifacts that were successfully applied.
+ *
+ * @return the artifactsApplied value
+ */
+ public Integer artifactsApplied() {
+ return this.artifactsApplied;
+ }
+
+ /**
+ * Set the total count of the artifacts that were successfully applied.
+ *
+ * @param artifactsApplied the artifactsApplied value to set
+ * @return the ArtifactDeploymentStatusPropertiesFragment object itself.
+ */
+ public ArtifactDeploymentStatusPropertiesFragment withArtifactsApplied(Integer artifactsApplied) {
+ this.artifactsApplied = artifactsApplied;
+ return this;
+ }
+
+ /**
+ * Get the total count of the artifacts that were tentatively applied.
+ *
+ * @return the totalArtifacts value
+ */
+ public Integer totalArtifacts() {
+ return this.totalArtifacts;
+ }
+
+ /**
+ * Set the total count of the artifacts that were tentatively applied.
+ *
+ * @param totalArtifacts the totalArtifacts value to set
+ * @return the ArtifactDeploymentStatusPropertiesFragment object itself.
+ */
+ public ArtifactDeploymentStatusPropertiesFragment withTotalArtifacts(Integer totalArtifacts) {
+ this.totalArtifacts = totalArtifacts;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactInstallProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactInstallProperties.java
new file mode 100644
index 000000000000..c92c5aba8bcd
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactInstallProperties.java
@@ -0,0 +1,175 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.List;
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of an artifact.
+ */
+public class ArtifactInstallProperties {
+ /**
+ * The artifact's identifier.
+ */
+ @JsonProperty(value = "artifactId")
+ private String artifactId;
+
+ /**
+ * The parameters of the artifact.
+ */
+ @JsonProperty(value = "parameters")
+ private List parameters;
+
+ /**
+ * The status of the artifact.
+ */
+ @JsonProperty(value = "status")
+ private String status;
+
+ /**
+ * The status message from the deployment.
+ */
+ @JsonProperty(value = "deploymentStatusMessage")
+ private String deploymentStatusMessage;
+
+ /**
+ * The status message from the virtual machine extension.
+ */
+ @JsonProperty(value = "vmExtensionStatusMessage")
+ private String vmExtensionStatusMessage;
+
+ /**
+ * The time that the artifact starts to install on the virtual machine.
+ */
+ @JsonProperty(value = "installTime")
+ private DateTime installTime;
+
+ /**
+ * Get the artifact's identifier.
+ *
+ * @return the artifactId value
+ */
+ public String artifactId() {
+ return this.artifactId;
+ }
+
+ /**
+ * Set the artifact's identifier.
+ *
+ * @param artifactId the artifactId value to set
+ * @return the ArtifactInstallProperties object itself.
+ */
+ public ArtifactInstallProperties withArtifactId(String artifactId) {
+ this.artifactId = artifactId;
+ return this;
+ }
+
+ /**
+ * Get the parameters of the artifact.
+ *
+ * @return the parameters value
+ */
+ public List parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Set the parameters of the artifact.
+ *
+ * @param parameters the parameters value to set
+ * @return the ArtifactInstallProperties object itself.
+ */
+ public ArtifactInstallProperties withParameters(List parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+
+ /**
+ * Get the status of the artifact.
+ *
+ * @return the status value
+ */
+ public String status() {
+ return this.status;
+ }
+
+ /**
+ * Set the status of the artifact.
+ *
+ * @param status the status value to set
+ * @return the ArtifactInstallProperties object itself.
+ */
+ public ArtifactInstallProperties withStatus(String status) {
+ this.status = status;
+ return this;
+ }
+
+ /**
+ * Get the status message from the deployment.
+ *
+ * @return the deploymentStatusMessage value
+ */
+ public String deploymentStatusMessage() {
+ return this.deploymentStatusMessage;
+ }
+
+ /**
+ * Set the status message from the deployment.
+ *
+ * @param deploymentStatusMessage the deploymentStatusMessage value to set
+ * @return the ArtifactInstallProperties object itself.
+ */
+ public ArtifactInstallProperties withDeploymentStatusMessage(String deploymentStatusMessage) {
+ this.deploymentStatusMessage = deploymentStatusMessage;
+ return this;
+ }
+
+ /**
+ * Get the status message from the virtual machine extension.
+ *
+ * @return the vmExtensionStatusMessage value
+ */
+ public String vmExtensionStatusMessage() {
+ return this.vmExtensionStatusMessage;
+ }
+
+ /**
+ * Set the status message from the virtual machine extension.
+ *
+ * @param vmExtensionStatusMessage the vmExtensionStatusMessage value to set
+ * @return the ArtifactInstallProperties object itself.
+ */
+ public ArtifactInstallProperties withVmExtensionStatusMessage(String vmExtensionStatusMessage) {
+ this.vmExtensionStatusMessage = vmExtensionStatusMessage;
+ return this;
+ }
+
+ /**
+ * Get the time that the artifact starts to install on the virtual machine.
+ *
+ * @return the installTime value
+ */
+ public DateTime installTime() {
+ return this.installTime;
+ }
+
+ /**
+ * Set the time that the artifact starts to install on the virtual machine.
+ *
+ * @param installTime the installTime value to set
+ * @return the ArtifactInstallProperties object itself.
+ */
+ public ArtifactInstallProperties withInstallTime(DateTime installTime) {
+ this.installTime = installTime;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactInstallPropertiesFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactInstallPropertiesFragment.java
new file mode 100644
index 000000000000..3a94f18a401f
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactInstallPropertiesFragment.java
@@ -0,0 +1,175 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.List;
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of an artifact.
+ */
+public class ArtifactInstallPropertiesFragment {
+ /**
+ * The artifact's identifier.
+ */
+ @JsonProperty(value = "artifactId")
+ private String artifactId;
+
+ /**
+ * The parameters of the artifact.
+ */
+ @JsonProperty(value = "parameters")
+ private List parameters;
+
+ /**
+ * The status of the artifact.
+ */
+ @JsonProperty(value = "status")
+ private String status;
+
+ /**
+ * The status message from the deployment.
+ */
+ @JsonProperty(value = "deploymentStatusMessage")
+ private String deploymentStatusMessage;
+
+ /**
+ * The status message from the virtual machine extension.
+ */
+ @JsonProperty(value = "vmExtensionStatusMessage")
+ private String vmExtensionStatusMessage;
+
+ /**
+ * The time that the artifact starts to install on the virtual machine.
+ */
+ @JsonProperty(value = "installTime")
+ private DateTime installTime;
+
+ /**
+ * Get the artifact's identifier.
+ *
+ * @return the artifactId value
+ */
+ public String artifactId() {
+ return this.artifactId;
+ }
+
+ /**
+ * Set the artifact's identifier.
+ *
+ * @param artifactId the artifactId value to set
+ * @return the ArtifactInstallPropertiesFragment object itself.
+ */
+ public ArtifactInstallPropertiesFragment withArtifactId(String artifactId) {
+ this.artifactId = artifactId;
+ return this;
+ }
+
+ /**
+ * Get the parameters of the artifact.
+ *
+ * @return the parameters value
+ */
+ public List parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Set the parameters of the artifact.
+ *
+ * @param parameters the parameters value to set
+ * @return the ArtifactInstallPropertiesFragment object itself.
+ */
+ public ArtifactInstallPropertiesFragment withParameters(List parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+
+ /**
+ * Get the status of the artifact.
+ *
+ * @return the status value
+ */
+ public String status() {
+ return this.status;
+ }
+
+ /**
+ * Set the status of the artifact.
+ *
+ * @param status the status value to set
+ * @return the ArtifactInstallPropertiesFragment object itself.
+ */
+ public ArtifactInstallPropertiesFragment withStatus(String status) {
+ this.status = status;
+ return this;
+ }
+
+ /**
+ * Get the status message from the deployment.
+ *
+ * @return the deploymentStatusMessage value
+ */
+ public String deploymentStatusMessage() {
+ return this.deploymentStatusMessage;
+ }
+
+ /**
+ * Set the status message from the deployment.
+ *
+ * @param deploymentStatusMessage the deploymentStatusMessage value to set
+ * @return the ArtifactInstallPropertiesFragment object itself.
+ */
+ public ArtifactInstallPropertiesFragment withDeploymentStatusMessage(String deploymentStatusMessage) {
+ this.deploymentStatusMessage = deploymentStatusMessage;
+ return this;
+ }
+
+ /**
+ * Get the status message from the virtual machine extension.
+ *
+ * @return the vmExtensionStatusMessage value
+ */
+ public String vmExtensionStatusMessage() {
+ return this.vmExtensionStatusMessage;
+ }
+
+ /**
+ * Set the status message from the virtual machine extension.
+ *
+ * @param vmExtensionStatusMessage the vmExtensionStatusMessage value to set
+ * @return the ArtifactInstallPropertiesFragment object itself.
+ */
+ public ArtifactInstallPropertiesFragment withVmExtensionStatusMessage(String vmExtensionStatusMessage) {
+ this.vmExtensionStatusMessage = vmExtensionStatusMessage;
+ return this;
+ }
+
+ /**
+ * Get the time that the artifact starts to install on the virtual machine.
+ *
+ * @return the installTime value
+ */
+ public DateTime installTime() {
+ return this.installTime;
+ }
+
+ /**
+ * Set the time that the artifact starts to install on the virtual machine.
+ *
+ * @param installTime the installTime value to set
+ * @return the ArtifactInstallPropertiesFragment object itself.
+ */
+ public ArtifactInstallPropertiesFragment withInstallTime(DateTime installTime) {
+ this.installTime = installTime;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactParameterProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactParameterProperties.java
new file mode 100644
index 000000000000..04dfb1b15eaa
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactParameterProperties.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of an artifact parameter.
+ */
+public class ArtifactParameterProperties {
+ /**
+ * The name of the artifact parameter.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * The value of the artifact parameter.
+ */
+ @JsonProperty(value = "value")
+ private String value;
+
+ /**
+ * Get the name of the artifact parameter.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the artifact parameter.
+ *
+ * @param name the name value to set
+ * @return the ArtifactParameterProperties object itself.
+ */
+ public ArtifactParameterProperties withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the value of the artifact parameter.
+ *
+ * @return the value value
+ */
+ public String value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value of the artifact parameter.
+ *
+ * @param value the value value to set
+ * @return the ArtifactParameterProperties object itself.
+ */
+ public ArtifactParameterProperties withValue(String value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactParameterPropertiesFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactParameterPropertiesFragment.java
new file mode 100644
index 000000000000..85f7f963b1b9
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactParameterPropertiesFragment.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of an artifact parameter.
+ */
+public class ArtifactParameterPropertiesFragment {
+ /**
+ * The name of the artifact parameter.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * The value of the artifact parameter.
+ */
+ @JsonProperty(value = "value")
+ private String value;
+
+ /**
+ * Get the name of the artifact parameter.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the artifact parameter.
+ *
+ * @param name the name value to set
+ * @return the ArtifactParameterPropertiesFragment object itself.
+ */
+ public ArtifactParameterPropertiesFragment withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the value of the artifact parameter.
+ *
+ * @return the value value
+ */
+ public String value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value of the artifact parameter.
+ *
+ * @param value the value value to set
+ * @return the ArtifactParameterPropertiesFragment object itself.
+ */
+ public ArtifactParameterPropertiesFragment withValue(String value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactSource.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactSource.java
new file mode 100644
index 000000000000..be3641a6987b
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactSource.java
@@ -0,0 +1,443 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ArtifactSourceInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing ArtifactSource.
+ */
+public interface ArtifactSource extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the armTemplateFolderPath value.
+ */
+ String armTemplateFolderPath();
+
+ /**
+ * @return the branchRef value.
+ */
+ String branchRef();
+
+ /**
+ * @return the createdDate value.
+ */
+ DateTime createdDate();
+
+ /**
+ * @return the displayName value.
+ */
+ String displayName();
+
+ /**
+ * @return the folderPath value.
+ */
+ String folderPath();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the securityToken value.
+ */
+ String securityToken();
+
+ /**
+ * @return the sourceType value.
+ */
+ SourceControlType sourceType();
+
+ /**
+ * @return the status value.
+ */
+ EnableStatus status();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the uniqueIdentifier value.
+ */
+ String uniqueIdentifier();
+
+ /**
+ * @return the uri value.
+ */
+ String uri();
+
+ /**
+ * The entirety of the ArtifactSource definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of ArtifactSource definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a ArtifactSource definition.
+ */
+ interface Blank extends WithLab {
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify Lab.
+ */
+ interface WithLab {
+ /**
+ * Specifies resourceGroupName, labName.
+ * @param resourceGroupName The name of the resource group
+ * @param labName The name of the lab
+ * @return the next definition stage
+ */
+ WithCreate withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify ArmTemplateFolderPath.
+ */
+ interface WithArmTemplateFolderPath {
+ /**
+ * Specifies armTemplateFolderPath.
+ * @param armTemplateFolderPath The folder containing Azure Resource Manager templates
+ * @return the next definition stage
+ */
+ WithCreate withArmTemplateFolderPath(String armTemplateFolderPath);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify BranchRef.
+ */
+ interface WithBranchRef {
+ /**
+ * Specifies branchRef.
+ * @param branchRef The artifact source's branch reference
+ * @return the next definition stage
+ */
+ WithCreate withBranchRef(String branchRef);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify DisplayName.
+ */
+ interface WithDisplayName {
+ /**
+ * Specifies displayName.
+ * @param displayName The artifact source's display name
+ * @return the next definition stage
+ */
+ WithCreate withDisplayName(String displayName);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify FolderPath.
+ */
+ interface WithFolderPath {
+ /**
+ * Specifies folderPath.
+ * @param folderPath The folder containing artifacts
+ * @return the next definition stage
+ */
+ WithCreate withFolderPath(String folderPath);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next definition stage
+ */
+ WithCreate withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify SecurityToken.
+ */
+ interface WithSecurityToken {
+ /**
+ * Specifies securityToken.
+ * @param securityToken The security token to authenticate to the artifact source
+ * @return the next definition stage
+ */
+ WithCreate withSecurityToken(String securityToken);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify SourceType.
+ */
+ interface WithSourceType {
+ /**
+ * Specifies sourceType.
+ * @param sourceType The artifact source's type. Possible values include: 'VsoGit', 'GitHub'
+ * @return the next definition stage
+ */
+ WithCreate withSourceType(SourceControlType sourceType);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify Status.
+ */
+ interface WithStatus {
+ /**
+ * Specifies status.
+ * @param status Indicates if the artifact source is enabled (values: Enabled, Disabled). Possible values include: 'Enabled', 'Disabled'
+ * @return the next definition stage
+ */
+ WithCreate withStatus(EnableStatus status);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next definition stage
+ */
+ WithCreate withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify Uri.
+ */
+ interface WithUri {
+ /**
+ * Specifies uri.
+ * @param uri The artifact source's URI
+ * @return the next definition stage
+ */
+ WithCreate withUri(String uri);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithArmTemplateFolderPath, DefinitionStages.WithBranchRef, DefinitionStages.WithDisplayName, DefinitionStages.WithFolderPath, DefinitionStages.WithLocation, DefinitionStages.WithProvisioningState, DefinitionStages.WithSecurityToken, DefinitionStages.WithSourceType, DefinitionStages.WithStatus, DefinitionStages.WithTags, DefinitionStages.WithUniqueIdentifier, DefinitionStages.WithUri {
+ }
+ }
+ /**
+ * The template for a ArtifactSource update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithArmTemplateFolderPath, UpdateStages.WithBranchRef, UpdateStages.WithDisplayName, UpdateStages.WithFolderPath, UpdateStages.WithLocation, UpdateStages.WithProvisioningState, UpdateStages.WithSecurityToken, UpdateStages.WithSourceType, UpdateStages.WithStatus, UpdateStages.WithTags, UpdateStages.WithUniqueIdentifier, UpdateStages.WithUri {
+ }
+
+ /**
+ * Grouping of ArtifactSource update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the artifactsource update allowing to specify ArmTemplateFolderPath.
+ */
+ interface WithArmTemplateFolderPath {
+ /**
+ * Specifies armTemplateFolderPath.
+ * @param armTemplateFolderPath The folder containing Azure Resource Manager templates
+ * @return the next update stage
+ */
+ Update withArmTemplateFolderPath(String armTemplateFolderPath);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify BranchRef.
+ */
+ interface WithBranchRef {
+ /**
+ * Specifies branchRef.
+ * @param branchRef The artifact source's branch reference
+ * @return the next update stage
+ */
+ Update withBranchRef(String branchRef);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify DisplayName.
+ */
+ interface WithDisplayName {
+ /**
+ * Specifies displayName.
+ * @param displayName The artifact source's display name
+ * @return the next update stage
+ */
+ Update withDisplayName(String displayName);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify FolderPath.
+ */
+ interface WithFolderPath {
+ /**
+ * Specifies folderPath.
+ * @param folderPath The folder containing artifacts
+ * @return the next update stage
+ */
+ Update withFolderPath(String folderPath);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next update stage
+ */
+ Update withLocation(String location);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next update stage
+ */
+ Update withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify SecurityToken.
+ */
+ interface WithSecurityToken {
+ /**
+ * Specifies securityToken.
+ * @param securityToken The security token to authenticate to the artifact source
+ * @return the next update stage
+ */
+ Update withSecurityToken(String securityToken);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify SourceType.
+ */
+ interface WithSourceType {
+ /**
+ * Specifies sourceType.
+ * @param sourceType The artifact source's type. Possible values include: 'VsoGit', 'GitHub'
+ * @return the next update stage
+ */
+ Update withSourceType(SourceControlType sourceType);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify Status.
+ */
+ interface WithStatus {
+ /**
+ * Specifies status.
+ * @param status Indicates if the artifact source is enabled (values: Enabled, Disabled). Possible values include: 'Enabled', 'Disabled'
+ * @return the next update stage
+ */
+ Update withStatus(EnableStatus status);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next update stage
+ */
+ Update withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify Uri.
+ */
+ interface WithUri {
+ /**
+ * Specifies uri.
+ * @param uri The artifact source's URI
+ * @return the next update stage
+ */
+ Update withUri(String uri);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactSourceFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactSourceFragment.java
new file mode 100644
index 000000000000..e8bfe1ad5061
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactSourceFragment.java
@@ -0,0 +1,283 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.rest.SkipParentValidation;
+import com.microsoft.azure.Resource;
+
+/**
+ * Properties of an artifact source.
+ */
+@JsonFlatten
+@SkipParentValidation
+public class ArtifactSourceFragment extends Resource {
+ /**
+ * The artifact source's display name.
+ */
+ @JsonProperty(value = "properties.displayName")
+ private String displayName;
+
+ /**
+ * The artifact source's URI.
+ */
+ @JsonProperty(value = "properties.uri")
+ private String uri;
+
+ /**
+ * The artifact source's type. Possible values include: 'VsoGit', 'GitHub'.
+ */
+ @JsonProperty(value = "properties.sourceType")
+ private SourceControlType sourceType;
+
+ /**
+ * The folder containing artifacts.
+ */
+ @JsonProperty(value = "properties.folderPath")
+ private String folderPath;
+
+ /**
+ * The folder containing Azure Resource Manager templates.
+ */
+ @JsonProperty(value = "properties.armTemplateFolderPath")
+ private String armTemplateFolderPath;
+
+ /**
+ * The artifact source's branch reference.
+ */
+ @JsonProperty(value = "properties.branchRef")
+ private String branchRef;
+
+ /**
+ * The security token to authenticate to the artifact source.
+ */
+ @JsonProperty(value = "properties.securityToken")
+ private String securityToken;
+
+ /**
+ * Indicates if the artifact source is enabled (values: Enabled, Disabled).
+ * Possible values include: 'Enabled', 'Disabled'.
+ */
+ @JsonProperty(value = "properties.status")
+ private EnableStatus status;
+
+ /**
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState")
+ private String provisioningState;
+
+ /**
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier")
+ private String uniqueIdentifier;
+
+ /**
+ * Get the artifact source's display name.
+ *
+ * @return the displayName value
+ */
+ public String displayName() {
+ return this.displayName;
+ }
+
+ /**
+ * Set the artifact source's display name.
+ *
+ * @param displayName the displayName value to set
+ * @return the ArtifactSourceFragment object itself.
+ */
+ public ArtifactSourceFragment withDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ /**
+ * Get the artifact source's URI.
+ *
+ * @return the uri value
+ */
+ public String uri() {
+ return this.uri;
+ }
+
+ /**
+ * Set the artifact source's URI.
+ *
+ * @param uri the uri value to set
+ * @return the ArtifactSourceFragment object itself.
+ */
+ public ArtifactSourceFragment withUri(String uri) {
+ this.uri = uri;
+ return this;
+ }
+
+ /**
+ * Get the artifact source's type. Possible values include: 'VsoGit', 'GitHub'.
+ *
+ * @return the sourceType value
+ */
+ public SourceControlType sourceType() {
+ return this.sourceType;
+ }
+
+ /**
+ * Set the artifact source's type. Possible values include: 'VsoGit', 'GitHub'.
+ *
+ * @param sourceType the sourceType value to set
+ * @return the ArtifactSourceFragment object itself.
+ */
+ public ArtifactSourceFragment withSourceType(SourceControlType sourceType) {
+ this.sourceType = sourceType;
+ return this;
+ }
+
+ /**
+ * Get the folder containing artifacts.
+ *
+ * @return the folderPath value
+ */
+ public String folderPath() {
+ return this.folderPath;
+ }
+
+ /**
+ * Set the folder containing artifacts.
+ *
+ * @param folderPath the folderPath value to set
+ * @return the ArtifactSourceFragment object itself.
+ */
+ public ArtifactSourceFragment withFolderPath(String folderPath) {
+ this.folderPath = folderPath;
+ return this;
+ }
+
+ /**
+ * Get the folder containing Azure Resource Manager templates.
+ *
+ * @return the armTemplateFolderPath value
+ */
+ public String armTemplateFolderPath() {
+ return this.armTemplateFolderPath;
+ }
+
+ /**
+ * Set the folder containing Azure Resource Manager templates.
+ *
+ * @param armTemplateFolderPath the armTemplateFolderPath value to set
+ * @return the ArtifactSourceFragment object itself.
+ */
+ public ArtifactSourceFragment withArmTemplateFolderPath(String armTemplateFolderPath) {
+ this.armTemplateFolderPath = armTemplateFolderPath;
+ return this;
+ }
+
+ /**
+ * Get the artifact source's branch reference.
+ *
+ * @return the branchRef value
+ */
+ public String branchRef() {
+ return this.branchRef;
+ }
+
+ /**
+ * Set the artifact source's branch reference.
+ *
+ * @param branchRef the branchRef value to set
+ * @return the ArtifactSourceFragment object itself.
+ */
+ public ArtifactSourceFragment withBranchRef(String branchRef) {
+ this.branchRef = branchRef;
+ return this;
+ }
+
+ /**
+ * Get the security token to authenticate to the artifact source.
+ *
+ * @return the securityToken value
+ */
+ public String securityToken() {
+ return this.securityToken;
+ }
+
+ /**
+ * Set the security token to authenticate to the artifact source.
+ *
+ * @param securityToken the securityToken value to set
+ * @return the ArtifactSourceFragment object itself.
+ */
+ public ArtifactSourceFragment withSecurityToken(String securityToken) {
+ this.securityToken = securityToken;
+ return this;
+ }
+
+ /**
+ * Get indicates if the artifact source is enabled (values: Enabled, Disabled). Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @return the status value
+ */
+ public EnableStatus status() {
+ return this.status;
+ }
+
+ /**
+ * Set indicates if the artifact source is enabled (values: Enabled, Disabled). Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @param status the status value to set
+ * @return the ArtifactSourceFragment object itself.
+ */
+ public ArtifactSourceFragment withStatus(EnableStatus status) {
+ this.status = status;
+ return this;
+ }
+
+ /**
+ * Get the provisioning status of the resource.
+ *
+ * @return the provisioningState value
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Set the provisioning status of the resource.
+ *
+ * @param provisioningState the provisioningState value to set
+ * @return the ArtifactSourceFragment object itself.
+ */
+ public ArtifactSourceFragment withProvisioningState(String provisioningState) {
+ this.provisioningState = provisioningState;
+ return this;
+ }
+
+ /**
+ * Get the unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /**
+ * Set the unique immutable identifier of a resource (Guid).
+ *
+ * @param uniqueIdentifier the uniqueIdentifier value to set
+ * @return the ArtifactSourceFragment object itself.
+ */
+ public ArtifactSourceFragment withUniqueIdentifier(String uniqueIdentifier) {
+ this.uniqueIdentifier = uniqueIdentifier;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactSources.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactSources.java
new file mode 100644
index 000000000000..e6bf3a418bef
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ArtifactSources.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ArtifactSourcesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ArtifactSources.
+ */
+public interface ArtifactSources extends SupportsCreating, HasInner {
+ /**
+ * Get artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the artifact source.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List artifact sources in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String labName);
+
+ /**
+ * Delete artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the artifact source.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Artifacts.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Artifacts.java
new file mode 100644
index 000000000000..e0fdca65fedd
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Artifacts.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ArtifactsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Artifacts.
+ */
+public interface Artifacts extends HasInner {
+ /**
+ * Generates an ARM template for the given artifact, uploads the required files to a storage account, and validates the generated artifact.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @param name The name of the artifact.
+ * @param generateArmTemplateRequest Parameters for generating an ARM template for deploying artifacts.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable generateArmTemplateAsync(String resourceGroupName, String labName, String artifactSourceName, String name, GenerateArmTemplateRequest generateArmTemplateRequest);
+
+ /**
+ * Get artifact.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @param name The name of the artifact.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String labName, String artifactSourceName, String name);
+
+ /**
+ * List artifacts in a given artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String labName, final String artifactSourceName);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/AttachDiskProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/AttachDiskProperties.java
new file mode 100644
index 000000000000..95355d2c42ba
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/AttachDiskProperties.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of the disk to attach.
+ */
+public class AttachDiskProperties {
+ /**
+ * The resource ID of the Lab virtual machine to which the disk is
+ * attached.
+ */
+ @JsonProperty(value = "leasedByLabVmId")
+ private String leasedByLabVmId;
+
+ /**
+ * Get the resource ID of the Lab virtual machine to which the disk is attached.
+ *
+ * @return the leasedByLabVmId value
+ */
+ public String leasedByLabVmId() {
+ return this.leasedByLabVmId;
+ }
+
+ /**
+ * Set the resource ID of the Lab virtual machine to which the disk is attached.
+ *
+ * @param leasedByLabVmId the leasedByLabVmId value to set
+ * @return the AttachDiskProperties object itself.
+ */
+ public AttachDiskProperties withLeasedByLabVmId(String leasedByLabVmId) {
+ this.leasedByLabVmId = leasedByLabVmId;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/AttachNewDataDiskOptions.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/AttachNewDataDiskOptions.java
new file mode 100644
index 000000000000..5768d0eae4e5
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/AttachNewDataDiskOptions.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties to attach new disk to the Virtual Machine.
+ */
+public class AttachNewDataDiskOptions {
+ /**
+ * Size of the disk to be attached in Gibibytes.
+ */
+ @JsonProperty(value = "diskSizeGiB")
+ private Integer diskSizeGiB;
+
+ /**
+ * The name of the disk to be attached.
+ */
+ @JsonProperty(value = "diskName")
+ private String diskName;
+
+ /**
+ * The storage type for the disk (i.e. Standard, Premium). Possible values
+ * include: 'Standard', 'Premium'.
+ */
+ @JsonProperty(value = "diskType")
+ private StorageType diskType;
+
+ /**
+ * Get size of the disk to be attached in Gibibytes.
+ *
+ * @return the diskSizeGiB value
+ */
+ public Integer diskSizeGiB() {
+ return this.diskSizeGiB;
+ }
+
+ /**
+ * Set size of the disk to be attached in Gibibytes.
+ *
+ * @param diskSizeGiB the diskSizeGiB value to set
+ * @return the AttachNewDataDiskOptions object itself.
+ */
+ public AttachNewDataDiskOptions withDiskSizeGiB(Integer diskSizeGiB) {
+ this.diskSizeGiB = diskSizeGiB;
+ return this;
+ }
+
+ /**
+ * Get the name of the disk to be attached.
+ *
+ * @return the diskName value
+ */
+ public String diskName() {
+ return this.diskName;
+ }
+
+ /**
+ * Set the name of the disk to be attached.
+ *
+ * @param diskName the diskName value to set
+ * @return the AttachNewDataDiskOptions object itself.
+ */
+ public AttachNewDataDiskOptions withDiskName(String diskName) {
+ this.diskName = diskName;
+ return this;
+ }
+
+ /**
+ * Get the storage type for the disk (i.e. Standard, Premium). Possible values include: 'Standard', 'Premium'.
+ *
+ * @return the diskType value
+ */
+ public StorageType diskType() {
+ return this.diskType;
+ }
+
+ /**
+ * Set the storage type for the disk (i.e. Standard, Premium). Possible values include: 'Standard', 'Premium'.
+ *
+ * @param diskType the diskType value to set
+ * @return the AttachNewDataDiskOptions object itself.
+ */
+ public AttachNewDataDiskOptions withDiskType(StorageType diskType) {
+ this.diskType = diskType;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/BulkCreationParameters.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/BulkCreationParameters.java
new file mode 100644
index 000000000000..cec0e565186a
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/BulkCreationParameters.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Parameters for creating multiple virtual machines as a single action.
+ */
+public class BulkCreationParameters {
+ /**
+ * The number of virtual machine instances to create.
+ */
+ @JsonProperty(value = "instanceCount")
+ private Integer instanceCount;
+
+ /**
+ * Get the number of virtual machine instances to create.
+ *
+ * @return the instanceCount value
+ */
+ public Integer instanceCount() {
+ return this.instanceCount;
+ }
+
+ /**
+ * Set the number of virtual machine instances to create.
+ *
+ * @param instanceCount the instanceCount value to set
+ * @return the BulkCreationParameters object itself.
+ */
+ public BulkCreationParameters withInstanceCount(Integer instanceCount) {
+ this.instanceCount = instanceCount;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeDataDisk.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeDataDisk.java
new file mode 100644
index 000000000000..cde8329a5adf
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeDataDisk.java
@@ -0,0 +1,122 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A data disks attached to a virtual machine.
+ */
+public class ComputeDataDisk {
+ /**
+ * Gets data disk name.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * When backed by a blob, the URI of underlying blob.
+ */
+ @JsonProperty(value = "diskUri")
+ private String diskUri;
+
+ /**
+ * When backed by managed disk, this is the ID of the compute disk
+ * resource.
+ */
+ @JsonProperty(value = "managedDiskId")
+ private String managedDiskId;
+
+ /**
+ * Gets data disk size in GiB.
+ */
+ @JsonProperty(value = "diskSizeGiB")
+ private Integer diskSizeGiB;
+
+ /**
+ * Get gets data disk name.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set gets data disk name.
+ *
+ * @param name the name value to set
+ * @return the ComputeDataDisk object itself.
+ */
+ public ComputeDataDisk withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get when backed by a blob, the URI of underlying blob.
+ *
+ * @return the diskUri value
+ */
+ public String diskUri() {
+ return this.diskUri;
+ }
+
+ /**
+ * Set when backed by a blob, the URI of underlying blob.
+ *
+ * @param diskUri the diskUri value to set
+ * @return the ComputeDataDisk object itself.
+ */
+ public ComputeDataDisk withDiskUri(String diskUri) {
+ this.diskUri = diskUri;
+ return this;
+ }
+
+ /**
+ * Get when backed by managed disk, this is the ID of the compute disk resource.
+ *
+ * @return the managedDiskId value
+ */
+ public String managedDiskId() {
+ return this.managedDiskId;
+ }
+
+ /**
+ * Set when backed by managed disk, this is the ID of the compute disk resource.
+ *
+ * @param managedDiskId the managedDiskId value to set
+ * @return the ComputeDataDisk object itself.
+ */
+ public ComputeDataDisk withManagedDiskId(String managedDiskId) {
+ this.managedDiskId = managedDiskId;
+ return this;
+ }
+
+ /**
+ * Get gets data disk size in GiB.
+ *
+ * @return the diskSizeGiB value
+ */
+ public Integer diskSizeGiB() {
+ return this.diskSizeGiB;
+ }
+
+ /**
+ * Set gets data disk size in GiB.
+ *
+ * @param diskSizeGiB the diskSizeGiB value to set
+ * @return the ComputeDataDisk object itself.
+ */
+ public ComputeDataDisk withDiskSizeGiB(Integer diskSizeGiB) {
+ this.diskSizeGiB = diskSizeGiB;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeDataDiskFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeDataDiskFragment.java
new file mode 100644
index 000000000000..8a879b4b2bba
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeDataDiskFragment.java
@@ -0,0 +1,122 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A data disks attached to a virtual machine.
+ */
+public class ComputeDataDiskFragment {
+ /**
+ * Gets data disk name.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * When backed by a blob, the URI of underlying blob.
+ */
+ @JsonProperty(value = "diskUri")
+ private String diskUri;
+
+ /**
+ * When backed by managed disk, this is the ID of the compute disk
+ * resource.
+ */
+ @JsonProperty(value = "managedDiskId")
+ private String managedDiskId;
+
+ /**
+ * Gets data disk size in GiB.
+ */
+ @JsonProperty(value = "diskSizeGiB")
+ private Integer diskSizeGiB;
+
+ /**
+ * Get gets data disk name.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set gets data disk name.
+ *
+ * @param name the name value to set
+ * @return the ComputeDataDiskFragment object itself.
+ */
+ public ComputeDataDiskFragment withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get when backed by a blob, the URI of underlying blob.
+ *
+ * @return the diskUri value
+ */
+ public String diskUri() {
+ return this.diskUri;
+ }
+
+ /**
+ * Set when backed by a blob, the URI of underlying blob.
+ *
+ * @param diskUri the diskUri value to set
+ * @return the ComputeDataDiskFragment object itself.
+ */
+ public ComputeDataDiskFragment withDiskUri(String diskUri) {
+ this.diskUri = diskUri;
+ return this;
+ }
+
+ /**
+ * Get when backed by managed disk, this is the ID of the compute disk resource.
+ *
+ * @return the managedDiskId value
+ */
+ public String managedDiskId() {
+ return this.managedDiskId;
+ }
+
+ /**
+ * Set when backed by managed disk, this is the ID of the compute disk resource.
+ *
+ * @param managedDiskId the managedDiskId value to set
+ * @return the ComputeDataDiskFragment object itself.
+ */
+ public ComputeDataDiskFragment withManagedDiskId(String managedDiskId) {
+ this.managedDiskId = managedDiskId;
+ return this;
+ }
+
+ /**
+ * Get gets data disk size in GiB.
+ *
+ * @return the diskSizeGiB value
+ */
+ public Integer diskSizeGiB() {
+ return this.diskSizeGiB;
+ }
+
+ /**
+ * Set gets data disk size in GiB.
+ *
+ * @param diskSizeGiB the diskSizeGiB value to set
+ * @return the ComputeDataDiskFragment object itself.
+ */
+ public ComputeDataDiskFragment withDiskSizeGiB(Integer diskSizeGiB) {
+ this.diskSizeGiB = diskSizeGiB;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmInstanceViewStatus.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmInstanceViewStatus.java
new file mode 100644
index 000000000000..d3719422bdef
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmInstanceViewStatus.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Status information about a virtual machine.
+ */
+public class ComputeVmInstanceViewStatus {
+ /**
+ * Gets the status Code.
+ */
+ @JsonProperty(value = "code")
+ private String code;
+
+ /**
+ * Gets the short localizable label for the status.
+ */
+ @JsonProperty(value = "displayStatus")
+ private String displayStatus;
+
+ /**
+ * Gets the message associated with the status.
+ */
+ @JsonProperty(value = "message")
+ private String message;
+
+ /**
+ * Get gets the status Code.
+ *
+ * @return the code value
+ */
+ public String code() {
+ return this.code;
+ }
+
+ /**
+ * Set gets the status Code.
+ *
+ * @param code the code value to set
+ * @return the ComputeVmInstanceViewStatus object itself.
+ */
+ public ComputeVmInstanceViewStatus withCode(String code) {
+ this.code = code;
+ return this;
+ }
+
+ /**
+ * Get gets the short localizable label for the status.
+ *
+ * @return the displayStatus value
+ */
+ public String displayStatus() {
+ return this.displayStatus;
+ }
+
+ /**
+ * Set gets the short localizable label for the status.
+ *
+ * @param displayStatus the displayStatus value to set
+ * @return the ComputeVmInstanceViewStatus object itself.
+ */
+ public ComputeVmInstanceViewStatus withDisplayStatus(String displayStatus) {
+ this.displayStatus = displayStatus;
+ return this;
+ }
+
+ /**
+ * Get gets the message associated with the status.
+ *
+ * @return the message value
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Set gets the message associated with the status.
+ *
+ * @param message the message value to set
+ * @return the ComputeVmInstanceViewStatus object itself.
+ */
+ public ComputeVmInstanceViewStatus withMessage(String message) {
+ this.message = message;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmInstanceViewStatusFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmInstanceViewStatusFragment.java
new file mode 100644
index 000000000000..5d7c2431e861
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmInstanceViewStatusFragment.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Status information about a virtual machine.
+ */
+public class ComputeVmInstanceViewStatusFragment {
+ /**
+ * Gets the status Code.
+ */
+ @JsonProperty(value = "code")
+ private String code;
+
+ /**
+ * Gets the short localizable label for the status.
+ */
+ @JsonProperty(value = "displayStatus")
+ private String displayStatus;
+
+ /**
+ * Gets the message associated with the status.
+ */
+ @JsonProperty(value = "message")
+ private String message;
+
+ /**
+ * Get gets the status Code.
+ *
+ * @return the code value
+ */
+ public String code() {
+ return this.code;
+ }
+
+ /**
+ * Set gets the status Code.
+ *
+ * @param code the code value to set
+ * @return the ComputeVmInstanceViewStatusFragment object itself.
+ */
+ public ComputeVmInstanceViewStatusFragment withCode(String code) {
+ this.code = code;
+ return this;
+ }
+
+ /**
+ * Get gets the short localizable label for the status.
+ *
+ * @return the displayStatus value
+ */
+ public String displayStatus() {
+ return this.displayStatus;
+ }
+
+ /**
+ * Set gets the short localizable label for the status.
+ *
+ * @param displayStatus the displayStatus value to set
+ * @return the ComputeVmInstanceViewStatusFragment object itself.
+ */
+ public ComputeVmInstanceViewStatusFragment withDisplayStatus(String displayStatus) {
+ this.displayStatus = displayStatus;
+ return this;
+ }
+
+ /**
+ * Get gets the message associated with the status.
+ *
+ * @return the message value
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Set gets the message associated with the status.
+ *
+ * @param message the message value to set
+ * @return the ComputeVmInstanceViewStatusFragment object itself.
+ */
+ public ComputeVmInstanceViewStatusFragment withMessage(String message) {
+ this.message = message;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmProperties.java
new file mode 100644
index 000000000000..863cdcad6186
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmProperties.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of a virtual machine returned by the Microsoft.Compute API.
+ */
+public class ComputeVmProperties {
+ /**
+ * Gets the statuses of the virtual machine.
+ */
+ @JsonProperty(value = "statuses")
+ private List statuses;
+
+ /**
+ * Gets the OS type of the virtual machine.
+ */
+ @JsonProperty(value = "osType")
+ private String osType;
+
+ /**
+ * Gets the size of the virtual machine.
+ */
+ @JsonProperty(value = "vmSize")
+ private String vmSize;
+
+ /**
+ * Gets the network interface ID of the virtual machine.
+ */
+ @JsonProperty(value = "networkInterfaceId")
+ private String networkInterfaceId;
+
+ /**
+ * Gets OS disk blob uri for the virtual machine.
+ */
+ @JsonProperty(value = "osDiskId")
+ private String osDiskId;
+
+ /**
+ * Gets data disks blob uri for the virtual machine.
+ */
+ @JsonProperty(value = "dataDiskIds")
+ private List dataDiskIds;
+
+ /**
+ * Gets all data disks attached to the virtual machine.
+ */
+ @JsonProperty(value = "dataDisks")
+ private List dataDisks;
+
+ /**
+ * Get gets the statuses of the virtual machine.
+ *
+ * @return the statuses value
+ */
+ public List statuses() {
+ return this.statuses;
+ }
+
+ /**
+ * Set gets the statuses of the virtual machine.
+ *
+ * @param statuses the statuses value to set
+ * @return the ComputeVmProperties object itself.
+ */
+ public ComputeVmProperties withStatuses(List statuses) {
+ this.statuses = statuses;
+ return this;
+ }
+
+ /**
+ * Get gets the OS type of the virtual machine.
+ *
+ * @return the osType value
+ */
+ public String osType() {
+ return this.osType;
+ }
+
+ /**
+ * Set gets the OS type of the virtual machine.
+ *
+ * @param osType the osType value to set
+ * @return the ComputeVmProperties object itself.
+ */
+ public ComputeVmProperties withOsType(String osType) {
+ this.osType = osType;
+ return this;
+ }
+
+ /**
+ * Get gets the size of the virtual machine.
+ *
+ * @return the vmSize value
+ */
+ public String vmSize() {
+ return this.vmSize;
+ }
+
+ /**
+ * Set gets the size of the virtual machine.
+ *
+ * @param vmSize the vmSize value to set
+ * @return the ComputeVmProperties object itself.
+ */
+ public ComputeVmProperties withVmSize(String vmSize) {
+ this.vmSize = vmSize;
+ return this;
+ }
+
+ /**
+ * Get gets the network interface ID of the virtual machine.
+ *
+ * @return the networkInterfaceId value
+ */
+ public String networkInterfaceId() {
+ return this.networkInterfaceId;
+ }
+
+ /**
+ * Set gets the network interface ID of the virtual machine.
+ *
+ * @param networkInterfaceId the networkInterfaceId value to set
+ * @return the ComputeVmProperties object itself.
+ */
+ public ComputeVmProperties withNetworkInterfaceId(String networkInterfaceId) {
+ this.networkInterfaceId = networkInterfaceId;
+ return this;
+ }
+
+ /**
+ * Get gets OS disk blob uri for the virtual machine.
+ *
+ * @return the osDiskId value
+ */
+ public String osDiskId() {
+ return this.osDiskId;
+ }
+
+ /**
+ * Set gets OS disk blob uri for the virtual machine.
+ *
+ * @param osDiskId the osDiskId value to set
+ * @return the ComputeVmProperties object itself.
+ */
+ public ComputeVmProperties withOsDiskId(String osDiskId) {
+ this.osDiskId = osDiskId;
+ return this;
+ }
+
+ /**
+ * Get gets data disks blob uri for the virtual machine.
+ *
+ * @return the dataDiskIds value
+ */
+ public List dataDiskIds() {
+ return this.dataDiskIds;
+ }
+
+ /**
+ * Set gets data disks blob uri for the virtual machine.
+ *
+ * @param dataDiskIds the dataDiskIds value to set
+ * @return the ComputeVmProperties object itself.
+ */
+ public ComputeVmProperties withDataDiskIds(List dataDiskIds) {
+ this.dataDiskIds = dataDiskIds;
+ return this;
+ }
+
+ /**
+ * Get gets all data disks attached to the virtual machine.
+ *
+ * @return the dataDisks value
+ */
+ public List dataDisks() {
+ return this.dataDisks;
+ }
+
+ /**
+ * Set gets all data disks attached to the virtual machine.
+ *
+ * @param dataDisks the dataDisks value to set
+ * @return the ComputeVmProperties object itself.
+ */
+ public ComputeVmProperties withDataDisks(List dataDisks) {
+ this.dataDisks = dataDisks;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmPropertiesFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmPropertiesFragment.java
new file mode 100644
index 000000000000..243e8f2c6adf
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ComputeVmPropertiesFragment.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of a virtual machine returned by the Microsoft.Compute API.
+ */
+public class ComputeVmPropertiesFragment {
+ /**
+ * Gets the statuses of the virtual machine.
+ */
+ @JsonProperty(value = "statuses")
+ private List statuses;
+
+ /**
+ * Gets the OS type of the virtual machine.
+ */
+ @JsonProperty(value = "osType")
+ private String osType;
+
+ /**
+ * Gets the size of the virtual machine.
+ */
+ @JsonProperty(value = "vmSize")
+ private String vmSize;
+
+ /**
+ * Gets the network interface ID of the virtual machine.
+ */
+ @JsonProperty(value = "networkInterfaceId")
+ private String networkInterfaceId;
+
+ /**
+ * Gets OS disk blob uri for the virtual machine.
+ */
+ @JsonProperty(value = "osDiskId")
+ private String osDiskId;
+
+ /**
+ * Gets data disks blob uri for the virtual machine.
+ */
+ @JsonProperty(value = "dataDiskIds")
+ private List dataDiskIds;
+
+ /**
+ * Gets all data disks attached to the virtual machine.
+ */
+ @JsonProperty(value = "dataDisks")
+ private List dataDisks;
+
+ /**
+ * Get gets the statuses of the virtual machine.
+ *
+ * @return the statuses value
+ */
+ public List statuses() {
+ return this.statuses;
+ }
+
+ /**
+ * Set gets the statuses of the virtual machine.
+ *
+ * @param statuses the statuses value to set
+ * @return the ComputeVmPropertiesFragment object itself.
+ */
+ public ComputeVmPropertiesFragment withStatuses(List statuses) {
+ this.statuses = statuses;
+ return this;
+ }
+
+ /**
+ * Get gets the OS type of the virtual machine.
+ *
+ * @return the osType value
+ */
+ public String osType() {
+ return this.osType;
+ }
+
+ /**
+ * Set gets the OS type of the virtual machine.
+ *
+ * @param osType the osType value to set
+ * @return the ComputeVmPropertiesFragment object itself.
+ */
+ public ComputeVmPropertiesFragment withOsType(String osType) {
+ this.osType = osType;
+ return this;
+ }
+
+ /**
+ * Get gets the size of the virtual machine.
+ *
+ * @return the vmSize value
+ */
+ public String vmSize() {
+ return this.vmSize;
+ }
+
+ /**
+ * Set gets the size of the virtual machine.
+ *
+ * @param vmSize the vmSize value to set
+ * @return the ComputeVmPropertiesFragment object itself.
+ */
+ public ComputeVmPropertiesFragment withVmSize(String vmSize) {
+ this.vmSize = vmSize;
+ return this;
+ }
+
+ /**
+ * Get gets the network interface ID of the virtual machine.
+ *
+ * @return the networkInterfaceId value
+ */
+ public String networkInterfaceId() {
+ return this.networkInterfaceId;
+ }
+
+ /**
+ * Set gets the network interface ID of the virtual machine.
+ *
+ * @param networkInterfaceId the networkInterfaceId value to set
+ * @return the ComputeVmPropertiesFragment object itself.
+ */
+ public ComputeVmPropertiesFragment withNetworkInterfaceId(String networkInterfaceId) {
+ this.networkInterfaceId = networkInterfaceId;
+ return this;
+ }
+
+ /**
+ * Get gets OS disk blob uri for the virtual machine.
+ *
+ * @return the osDiskId value
+ */
+ public String osDiskId() {
+ return this.osDiskId;
+ }
+
+ /**
+ * Set gets OS disk blob uri for the virtual machine.
+ *
+ * @param osDiskId the osDiskId value to set
+ * @return the ComputeVmPropertiesFragment object itself.
+ */
+ public ComputeVmPropertiesFragment withOsDiskId(String osDiskId) {
+ this.osDiskId = osDiskId;
+ return this;
+ }
+
+ /**
+ * Get gets data disks blob uri for the virtual machine.
+ *
+ * @return the dataDiskIds value
+ */
+ public List dataDiskIds() {
+ return this.dataDiskIds;
+ }
+
+ /**
+ * Set gets data disks blob uri for the virtual machine.
+ *
+ * @param dataDiskIds the dataDiskIds value to set
+ * @return the ComputeVmPropertiesFragment object itself.
+ */
+ public ComputeVmPropertiesFragment withDataDiskIds(List dataDiskIds) {
+ this.dataDiskIds = dataDiskIds;
+ return this;
+ }
+
+ /**
+ * Get gets all data disks attached to the virtual machine.
+ *
+ * @return the dataDisks value
+ */
+ public List dataDisks() {
+ return this.dataDisks;
+ }
+
+ /**
+ * Set gets all data disks attached to the virtual machine.
+ *
+ * @param dataDisks the dataDisks value to set
+ * @return the ComputeVmPropertiesFragment object itself.
+ */
+ public ComputeVmPropertiesFragment withDataDisks(List dataDisks) {
+ this.dataDisks = dataDisks;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CostThresholdProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CostThresholdProperties.java
new file mode 100644
index 000000000000..832c128cacb3
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CostThresholdProperties.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of a cost threshold item.
+ */
+public class CostThresholdProperties {
+ /**
+ * The ID of the cost threshold item.
+ */
+ @JsonProperty(value = "thresholdId")
+ private String thresholdId;
+
+ /**
+ * The value of the percentage cost threshold.
+ */
+ @JsonProperty(value = "percentageThreshold")
+ private PercentageCostThresholdProperties percentageThreshold;
+
+ /**
+ * Indicates whether this threshold will be displayed on cost charts.
+ * Possible values include: 'Enabled', 'Disabled'.
+ */
+ @JsonProperty(value = "displayOnChart")
+ private CostThresholdStatus displayOnChart;
+
+ /**
+ * Indicates whether notifications will be sent when this threshold is
+ * exceeded. Possible values include: 'Enabled', 'Disabled'.
+ */
+ @JsonProperty(value = "sendNotificationWhenExceeded")
+ private CostThresholdStatus sendNotificationWhenExceeded;
+
+ /**
+ * Indicates the datetime when notifications were last sent for this
+ * threshold.
+ */
+ @JsonProperty(value = "notificationSent")
+ private String notificationSent;
+
+ /**
+ * Get the ID of the cost threshold item.
+ *
+ * @return the thresholdId value
+ */
+ public String thresholdId() {
+ return this.thresholdId;
+ }
+
+ /**
+ * Set the ID of the cost threshold item.
+ *
+ * @param thresholdId the thresholdId value to set
+ * @return the CostThresholdProperties object itself.
+ */
+ public CostThresholdProperties withThresholdId(String thresholdId) {
+ this.thresholdId = thresholdId;
+ return this;
+ }
+
+ /**
+ * Get the value of the percentage cost threshold.
+ *
+ * @return the percentageThreshold value
+ */
+ public PercentageCostThresholdProperties percentageThreshold() {
+ return this.percentageThreshold;
+ }
+
+ /**
+ * Set the value of the percentage cost threshold.
+ *
+ * @param percentageThreshold the percentageThreshold value to set
+ * @return the CostThresholdProperties object itself.
+ */
+ public CostThresholdProperties withPercentageThreshold(PercentageCostThresholdProperties percentageThreshold) {
+ this.percentageThreshold = percentageThreshold;
+ return this;
+ }
+
+ /**
+ * Get indicates whether this threshold will be displayed on cost charts. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @return the displayOnChart value
+ */
+ public CostThresholdStatus displayOnChart() {
+ return this.displayOnChart;
+ }
+
+ /**
+ * Set indicates whether this threshold will be displayed on cost charts. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @param displayOnChart the displayOnChart value to set
+ * @return the CostThresholdProperties object itself.
+ */
+ public CostThresholdProperties withDisplayOnChart(CostThresholdStatus displayOnChart) {
+ this.displayOnChart = displayOnChart;
+ return this;
+ }
+
+ /**
+ * Get indicates whether notifications will be sent when this threshold is exceeded. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @return the sendNotificationWhenExceeded value
+ */
+ public CostThresholdStatus sendNotificationWhenExceeded() {
+ return this.sendNotificationWhenExceeded;
+ }
+
+ /**
+ * Set indicates whether notifications will be sent when this threshold is exceeded. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @param sendNotificationWhenExceeded the sendNotificationWhenExceeded value to set
+ * @return the CostThresholdProperties object itself.
+ */
+ public CostThresholdProperties withSendNotificationWhenExceeded(CostThresholdStatus sendNotificationWhenExceeded) {
+ this.sendNotificationWhenExceeded = sendNotificationWhenExceeded;
+ return this;
+ }
+
+ /**
+ * Get indicates the datetime when notifications were last sent for this threshold.
+ *
+ * @return the notificationSent value
+ */
+ public String notificationSent() {
+ return this.notificationSent;
+ }
+
+ /**
+ * Set indicates the datetime when notifications were last sent for this threshold.
+ *
+ * @param notificationSent the notificationSent value to set
+ * @return the CostThresholdProperties object itself.
+ */
+ public CostThresholdProperties withNotificationSent(String notificationSent) {
+ this.notificationSent = notificationSent;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CostThresholdStatus.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CostThresholdStatus.java
new file mode 100644
index 000000000000..ea3113123fb6
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CostThresholdStatus.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for CostThresholdStatus.
+ */
+public final class CostThresholdStatus extends ExpandableStringEnum {
+ /** Static value Enabled for CostThresholdStatus. */
+ public static final CostThresholdStatus ENABLED = fromString("Enabled");
+
+ /** Static value Disabled for CostThresholdStatus. */
+ public static final CostThresholdStatus DISABLED = fromString("Disabled");
+
+ /**
+ * Creates or finds a CostThresholdStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding CostThresholdStatus
+ */
+ @JsonCreator
+ public static CostThresholdStatus fromString(String name) {
+ return fromString(name, CostThresholdStatus.class);
+ }
+
+ /**
+ * @return known CostThresholdStatus values
+ */
+ public static Collection values() {
+ return values(CostThresholdStatus.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CostType.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CostType.java
new file mode 100644
index 000000000000..1aa0474e825f
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CostType.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for CostType.
+ */
+public final class CostType extends ExpandableStringEnum {
+ /** Static value Unavailable for CostType. */
+ public static final CostType UNAVAILABLE = fromString("Unavailable");
+
+ /** Static value Reported for CostType. */
+ public static final CostType REPORTED = fromString("Reported");
+
+ /** Static value Projected for CostType. */
+ public static final CostType PROJECTED = fromString("Projected");
+
+ /**
+ * Creates or finds a CostType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding CostType
+ */
+ @JsonCreator
+ public static CostType fromString(String name) {
+ return fromString(name, CostType.class);
+ }
+
+ /**
+ * @return known CostType values
+ */
+ public static Collection values() {
+ return values(CostType.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Costs.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Costs.java
new file mode 100644
index 000000000000..39febe9dface
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Costs.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.CostsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Costs.
+ */
+public interface Costs extends SupportsCreating, HasInner {
+ /**
+ * Get cost.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the cost.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImage.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImage.java
new file mode 100644
index 000000000000..259a4f960da9
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImage.java
@@ -0,0 +1,356 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.CustomImageInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing CustomImage.
+ */
+public interface CustomImage extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the author value.
+ */
+ String author();
+
+ /**
+ * @return the creationDate value.
+ */
+ DateTime creationDate();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the managedImageId value.
+ */
+ String managedImageId();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the uniqueIdentifier value.
+ */
+ String uniqueIdentifier();
+
+ /**
+ * @return the vhd value.
+ */
+ CustomImagePropertiesCustom vhd();
+
+ /**
+ * @return the vm value.
+ */
+ CustomImagePropertiesFromVm vm();
+
+ /**
+ * The entirety of the CustomImage definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of CustomImage definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a CustomImage definition.
+ */
+ interface Blank extends WithLab {
+ }
+
+ /**
+ * The stage of the customimage definition allowing to specify Lab.
+ */
+ interface WithLab {
+ /**
+ * Specifies resourceGroupName, labName.
+ * @param resourceGroupName The name of the resource group
+ * @param labName The name of the lab
+ * @return the next definition stage
+ */
+ WithCreate withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the customimage definition allowing to specify Author.
+ */
+ interface WithAuthor {
+ /**
+ * Specifies author.
+ * @param author The author of the custom image
+ * @return the next definition stage
+ */
+ WithCreate withAuthor(String author);
+ }
+
+ /**
+ * The stage of the customimage definition allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description The description of the custom image
+ * @return the next definition stage
+ */
+ WithCreate withDescription(String description);
+ }
+
+ /**
+ * The stage of the customimage definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the customimage definition allowing to specify ManagedImageId.
+ */
+ interface WithManagedImageId {
+ /**
+ * Specifies managedImageId.
+ * @param managedImageId The Managed Image Id backing the custom image
+ * @return the next definition stage
+ */
+ WithCreate withManagedImageId(String managedImageId);
+ }
+
+ /**
+ * The stage of the customimage definition allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next definition stage
+ */
+ WithCreate withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the customimage definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the customimage definition allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next definition stage
+ */
+ WithCreate withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the customimage definition allowing to specify Vhd.
+ */
+ interface WithVhd {
+ /**
+ * Specifies vhd.
+ * @param vhd The VHD from which the image is to be created
+ * @return the next definition stage
+ */
+ WithCreate withVhd(CustomImagePropertiesCustom vhd);
+ }
+
+ /**
+ * The stage of the customimage definition allowing to specify Vm.
+ */
+ interface WithVm {
+ /**
+ * Specifies vm.
+ * @param vm The virtual machine from which the image is to be created
+ * @return the next definition stage
+ */
+ WithCreate withVm(CustomImagePropertiesFromVm vm);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithAuthor, DefinitionStages.WithDescription, DefinitionStages.WithLocation, DefinitionStages.WithManagedImageId, DefinitionStages.WithProvisioningState, DefinitionStages.WithTags, DefinitionStages.WithUniqueIdentifier, DefinitionStages.WithVhd, DefinitionStages.WithVm {
+ }
+ }
+ /**
+ * The template for a CustomImage update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithAuthor, UpdateStages.WithDescription, UpdateStages.WithLocation, UpdateStages.WithManagedImageId, UpdateStages.WithProvisioningState, UpdateStages.WithTags, UpdateStages.WithUniqueIdentifier, UpdateStages.WithVhd, UpdateStages.WithVm {
+ }
+
+ /**
+ * Grouping of CustomImage update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the customimage update allowing to specify Author.
+ */
+ interface WithAuthor {
+ /**
+ * Specifies author.
+ * @param author The author of the custom image
+ * @return the next update stage
+ */
+ Update withAuthor(String author);
+ }
+
+ /**
+ * The stage of the customimage update allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description The description of the custom image
+ * @return the next update stage
+ */
+ Update withDescription(String description);
+ }
+
+ /**
+ * The stage of the customimage update allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next update stage
+ */
+ Update withLocation(String location);
+ }
+
+ /**
+ * The stage of the customimage update allowing to specify ManagedImageId.
+ */
+ interface WithManagedImageId {
+ /**
+ * Specifies managedImageId.
+ * @param managedImageId The Managed Image Id backing the custom image
+ * @return the next update stage
+ */
+ Update withManagedImageId(String managedImageId);
+ }
+
+ /**
+ * The stage of the customimage update allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next update stage
+ */
+ Update withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the customimage update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the customimage update allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next update stage
+ */
+ Update withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the customimage update allowing to specify Vhd.
+ */
+ interface WithVhd {
+ /**
+ * Specifies vhd.
+ * @param vhd The VHD from which the image is to be created
+ * @return the next update stage
+ */
+ Update withVhd(CustomImagePropertiesCustom vhd);
+ }
+
+ /**
+ * The stage of the customimage update allowing to specify Vm.
+ */
+ interface WithVm {
+ /**
+ * Specifies vm.
+ * @param vm The virtual machine from which the image is to be created
+ * @return the next update stage
+ */
+ Update withVm(CustomImagePropertiesFromVm vm);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImageOsType.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImageOsType.java
new file mode 100644
index 000000000000..700fe6b66345
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImageOsType.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for CustomImageOsType.
+ */
+public final class CustomImageOsType extends ExpandableStringEnum {
+ /** Static value Windows for CustomImageOsType. */
+ public static final CustomImageOsType WINDOWS = fromString("Windows");
+
+ /** Static value Linux for CustomImageOsType. */
+ public static final CustomImageOsType LINUX = fromString("Linux");
+
+ /** Static value None for CustomImageOsType. */
+ public static final CustomImageOsType NONE = fromString("None");
+
+ /**
+ * Creates or finds a CustomImageOsType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding CustomImageOsType
+ */
+ @JsonCreator
+ public static CustomImageOsType fromString(String name) {
+ return fromString(name, CustomImageOsType.class);
+ }
+
+ /**
+ * @return known CustomImageOsType values
+ */
+ public static Collection values() {
+ return values(CustomImageOsType.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImagePropertiesCustom.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImagePropertiesCustom.java
new file mode 100644
index 000000000000..581ec7f8df27
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImagePropertiesCustom.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties for creating a custom image from a VHD.
+ */
+public class CustomImagePropertiesCustom {
+ /**
+ * The image name.
+ */
+ @JsonProperty(value = "imageName")
+ private String imageName;
+
+ /**
+ * Indicates whether sysprep has been run on the VHD.
+ */
+ @JsonProperty(value = "sysPrep")
+ private Boolean sysPrep;
+
+ /**
+ * The OS type of the custom image (i.e. Windows, Linux). Possible values
+ * include: 'Windows', 'Linux', 'None'.
+ */
+ @JsonProperty(value = "osType", required = true)
+ private CustomImageOsType osType;
+
+ /**
+ * Get the image name.
+ *
+ * @return the imageName value
+ */
+ public String imageName() {
+ return this.imageName;
+ }
+
+ /**
+ * Set the image name.
+ *
+ * @param imageName the imageName value to set
+ * @return the CustomImagePropertiesCustom object itself.
+ */
+ public CustomImagePropertiesCustom withImageName(String imageName) {
+ this.imageName = imageName;
+ return this;
+ }
+
+ /**
+ * Get indicates whether sysprep has been run on the VHD.
+ *
+ * @return the sysPrep value
+ */
+ public Boolean sysPrep() {
+ return this.sysPrep;
+ }
+
+ /**
+ * Set indicates whether sysprep has been run on the VHD.
+ *
+ * @param sysPrep the sysPrep value to set
+ * @return the CustomImagePropertiesCustom object itself.
+ */
+ public CustomImagePropertiesCustom withSysPrep(Boolean sysPrep) {
+ this.sysPrep = sysPrep;
+ return this;
+ }
+
+ /**
+ * Get the OS type of the custom image (i.e. Windows, Linux). Possible values include: 'Windows', 'Linux', 'None'.
+ *
+ * @return the osType value
+ */
+ public CustomImageOsType osType() {
+ return this.osType;
+ }
+
+ /**
+ * Set the OS type of the custom image (i.e. Windows, Linux). Possible values include: 'Windows', 'Linux', 'None'.
+ *
+ * @param osType the osType value to set
+ * @return the CustomImagePropertiesCustom object itself.
+ */
+ public CustomImagePropertiesCustom withOsType(CustomImageOsType osType) {
+ this.osType = osType;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImagePropertiesFromVm.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImagePropertiesFromVm.java
new file mode 100644
index 000000000000..8b2f05c669a6
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImagePropertiesFromVm.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties for creating a custom image from a virtual machine.
+ */
+public class CustomImagePropertiesFromVm {
+ /**
+ * The source vm identifier.
+ */
+ @JsonProperty(value = "sourceVmId")
+ private String sourceVmId;
+
+ /**
+ * The Windows OS information of the VM.
+ */
+ @JsonProperty(value = "windowsOsInfo")
+ private WindowsOsInfo windowsOsInfo;
+
+ /**
+ * The Linux OS information of the VM.
+ */
+ @JsonProperty(value = "linuxOsInfo")
+ private LinuxOsInfo linuxOsInfo;
+
+ /**
+ * Get the source vm identifier.
+ *
+ * @return the sourceVmId value
+ */
+ public String sourceVmId() {
+ return this.sourceVmId;
+ }
+
+ /**
+ * Set the source vm identifier.
+ *
+ * @param sourceVmId the sourceVmId value to set
+ * @return the CustomImagePropertiesFromVm object itself.
+ */
+ public CustomImagePropertiesFromVm withSourceVmId(String sourceVmId) {
+ this.sourceVmId = sourceVmId;
+ return this;
+ }
+
+ /**
+ * Get the Windows OS information of the VM.
+ *
+ * @return the windowsOsInfo value
+ */
+ public WindowsOsInfo windowsOsInfo() {
+ return this.windowsOsInfo;
+ }
+
+ /**
+ * Set the Windows OS information of the VM.
+ *
+ * @param windowsOsInfo the windowsOsInfo value to set
+ * @return the CustomImagePropertiesFromVm object itself.
+ */
+ public CustomImagePropertiesFromVm withWindowsOsInfo(WindowsOsInfo windowsOsInfo) {
+ this.windowsOsInfo = windowsOsInfo;
+ return this;
+ }
+
+ /**
+ * Get the Linux OS information of the VM.
+ *
+ * @return the linuxOsInfo value
+ */
+ public LinuxOsInfo linuxOsInfo() {
+ return this.linuxOsInfo;
+ }
+
+ /**
+ * Set the Linux OS information of the VM.
+ *
+ * @param linuxOsInfo the linuxOsInfo value to set
+ * @return the CustomImagePropertiesFromVm object itself.
+ */
+ public CustomImagePropertiesFromVm withLinuxOsInfo(LinuxOsInfo linuxOsInfo) {
+ this.linuxOsInfo = linuxOsInfo;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImages.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImages.java
new file mode 100644
index 000000000000..b4d4adbb58e0
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/CustomImages.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.CustomImagesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing CustomImages.
+ */
+public interface CustomImages extends SupportsCreating, HasInner {
+ /**
+ * Get custom image.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List custom images in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String labName);
+
+ /**
+ * Delete custom image. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DataDiskProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DataDiskProperties.java
new file mode 100644
index 000000000000..e69c4da11b89
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DataDiskProperties.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Request body for adding a new or existing data disk to a virtual machine.
+ */
+public class DataDiskProperties {
+ /**
+ * Specifies options to attach a new disk to the virtual machine.
+ */
+ @JsonProperty(value = "attachNewDataDiskOptions")
+ private AttachNewDataDiskOptions attachNewDataDiskOptions;
+
+ /**
+ * Specifies the existing lab disk id to attach to virtual machine.
+ */
+ @JsonProperty(value = "existingLabDiskId")
+ private String existingLabDiskId;
+
+ /**
+ * Caching option for a data disk (i.e. None, ReadOnly, ReadWrite).
+ * Possible values include: 'None', 'ReadOnly', 'ReadWrite'.
+ */
+ @JsonProperty(value = "hostCaching")
+ private HostCachingOptions hostCaching;
+
+ /**
+ * Get specifies options to attach a new disk to the virtual machine.
+ *
+ * @return the attachNewDataDiskOptions value
+ */
+ public AttachNewDataDiskOptions attachNewDataDiskOptions() {
+ return this.attachNewDataDiskOptions;
+ }
+
+ /**
+ * Set specifies options to attach a new disk to the virtual machine.
+ *
+ * @param attachNewDataDiskOptions the attachNewDataDiskOptions value to set
+ * @return the DataDiskProperties object itself.
+ */
+ public DataDiskProperties withAttachNewDataDiskOptions(AttachNewDataDiskOptions attachNewDataDiskOptions) {
+ this.attachNewDataDiskOptions = attachNewDataDiskOptions;
+ return this;
+ }
+
+ /**
+ * Get specifies the existing lab disk id to attach to virtual machine.
+ *
+ * @return the existingLabDiskId value
+ */
+ public String existingLabDiskId() {
+ return this.existingLabDiskId;
+ }
+
+ /**
+ * Set specifies the existing lab disk id to attach to virtual machine.
+ *
+ * @param existingLabDiskId the existingLabDiskId value to set
+ * @return the DataDiskProperties object itself.
+ */
+ public DataDiskProperties withExistingLabDiskId(String existingLabDiskId) {
+ this.existingLabDiskId = existingLabDiskId;
+ return this;
+ }
+
+ /**
+ * Get caching option for a data disk (i.e. None, ReadOnly, ReadWrite). Possible values include: 'None', 'ReadOnly', 'ReadWrite'.
+ *
+ * @return the hostCaching value
+ */
+ public HostCachingOptions hostCaching() {
+ return this.hostCaching;
+ }
+
+ /**
+ * Set caching option for a data disk (i.e. None, ReadOnly, ReadWrite). Possible values include: 'None', 'ReadOnly', 'ReadWrite'.
+ *
+ * @param hostCaching the hostCaching value to set
+ * @return the DataDiskProperties object itself.
+ */
+ public DataDiskProperties withHostCaching(HostCachingOptions hostCaching) {
+ this.hostCaching = hostCaching;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DayDetails.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DayDetails.java
new file mode 100644
index 000000000000..8969ccb57a3b
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DayDetails.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of a daily schedule.
+ */
+public class DayDetails {
+ /**
+ * The time of day the schedule will occur.
+ */
+ @JsonProperty(value = "time")
+ private String time;
+
+ /**
+ * Get the time of day the schedule will occur.
+ *
+ * @return the time value
+ */
+ public String time() {
+ return this.time;
+ }
+
+ /**
+ * Set the time of day the schedule will occur.
+ *
+ * @param time the time value to set
+ * @return the DayDetails object itself.
+ */
+ public DayDetails withTime(String time) {
+ this.time = time;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DayDetailsFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DayDetailsFragment.java
new file mode 100644
index 000000000000..3c3c4d4cb351
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DayDetailsFragment.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of a daily schedule.
+ */
+public class DayDetailsFragment {
+ /**
+ * The time of day the schedule will occur.
+ */
+ @JsonProperty(value = "time")
+ private String time;
+
+ /**
+ * Get the time of day the schedule will occur.
+ *
+ * @return the time value
+ */
+ public String time() {
+ return this.time;
+ }
+
+ /**
+ * Set the time of day the schedule will occur.
+ *
+ * @param time the time value to set
+ * @return the DayDetailsFragment object itself.
+ */
+ public DayDetailsFragment withTime(String time) {
+ this.time = time;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DetachDataDiskProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DetachDataDiskProperties.java
new file mode 100644
index 000000000000..e672577faa83
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DetachDataDiskProperties.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Request body for detaching data disk from a virtual machine.
+ */
+public class DetachDataDiskProperties {
+ /**
+ * Specifies the disk resource ID to detach from virtual machine.
+ */
+ @JsonProperty(value = "existingLabDiskId")
+ private String existingLabDiskId;
+
+ /**
+ * Get specifies the disk resource ID to detach from virtual machine.
+ *
+ * @return the existingLabDiskId value
+ */
+ public String existingLabDiskId() {
+ return this.existingLabDiskId;
+ }
+
+ /**
+ * Set specifies the disk resource ID to detach from virtual machine.
+ *
+ * @param existingLabDiskId the existingLabDiskId value to set
+ * @return the DetachDataDiskProperties object itself.
+ */
+ public DetachDataDiskProperties withExistingLabDiskId(String existingLabDiskId) {
+ this.existingLabDiskId = existingLabDiskId;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DetachDiskProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DetachDiskProperties.java
new file mode 100644
index 000000000000..f9d019ff2fc7
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DetachDiskProperties.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of the disk to detach.
+ */
+public class DetachDiskProperties {
+ /**
+ * The resource ID of the Lab VM to which the disk is attached.
+ */
+ @JsonProperty(value = "leasedByLabVmId")
+ private String leasedByLabVmId;
+
+ /**
+ * Get the resource ID of the Lab VM to which the disk is attached.
+ *
+ * @return the leasedByLabVmId value
+ */
+ public String leasedByLabVmId() {
+ return this.leasedByLabVmId;
+ }
+
+ /**
+ * Set the resource ID of the Lab VM to which the disk is attached.
+ *
+ * @param leasedByLabVmId the leasedByLabVmId value to set
+ * @return the DetachDiskProperties object itself.
+ */
+ public DetachDiskProperties withLeasedByLabVmId(String leasedByLabVmId) {
+ this.leasedByLabVmId = leasedByLabVmId;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Disk.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Disk.java
new file mode 100644
index 000000000000..938fd39f83d0
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Disk.java
@@ -0,0 +1,415 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DiskInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing Disk.
+ */
+public interface Disk extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the createdDate value.
+ */
+ DateTime createdDate();
+
+ /**
+ * @return the diskBlobName value.
+ */
+ String diskBlobName();
+
+ /**
+ * @return the diskSizeGiB value.
+ */
+ Integer diskSizeGiB();
+
+ /**
+ * @return the diskType value.
+ */
+ StorageType diskType();
+
+ /**
+ * @return the diskUri value.
+ */
+ String diskUri();
+
+ /**
+ * @return the hostCaching value.
+ */
+ String hostCaching();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the leasedByLabVmId value.
+ */
+ String leasedByLabVmId();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the managedDiskId value.
+ */
+ String managedDiskId();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the uniqueIdentifier value.
+ */
+ String uniqueIdentifier();
+
+ /**
+ * The entirety of the Disk definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithUser, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of Disk definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a Disk definition.
+ */
+ interface Blank extends WithUser {
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify User.
+ */
+ interface WithUser {
+ /**
+ * Specifies resourceGroupName, labName, userName.
+ * @param resourceGroupName The name of the resource group
+ * @param labName The name of the lab
+ * @param userName The name of the user profile
+ * @return the next definition stage
+ */
+ WithCreate withExistingUser(String resourceGroupName, String labName, String userName);
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify DiskBlobName.
+ */
+ interface WithDiskBlobName {
+ /**
+ * Specifies diskBlobName.
+ * @param diskBlobName When backed by a blob, the name of the VHD blob without extension
+ * @return the next definition stage
+ */
+ WithCreate withDiskBlobName(String diskBlobName);
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify DiskSizeGiB.
+ */
+ interface WithDiskSizeGiB {
+ /**
+ * Specifies diskSizeGiB.
+ * @param diskSizeGiB The size of the disk in Gibibytes
+ * @return the next definition stage
+ */
+ WithCreate withDiskSizeGiB(Integer diskSizeGiB);
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify DiskType.
+ */
+ interface WithDiskType {
+ /**
+ * Specifies diskType.
+ * @param diskType The storage type for the disk (i.e. Standard, Premium). Possible values include: 'Standard', 'Premium'
+ * @return the next definition stage
+ */
+ WithCreate withDiskType(StorageType diskType);
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify DiskUri.
+ */
+ interface WithDiskUri {
+ /**
+ * Specifies diskUri.
+ * @param diskUri When backed by a blob, the URI of underlying blob
+ * @return the next definition stage
+ */
+ WithCreate withDiskUri(String diskUri);
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify HostCaching.
+ */
+ interface WithHostCaching {
+ /**
+ * Specifies hostCaching.
+ * @param hostCaching The host caching policy of the disk (i.e. None, ReadOnly, ReadWrite)
+ * @return the next definition stage
+ */
+ WithCreate withHostCaching(String hostCaching);
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify LeasedByLabVmId.
+ */
+ interface WithLeasedByLabVmId {
+ /**
+ * Specifies leasedByLabVmId.
+ * @param leasedByLabVmId The resource ID of the VM to which this disk is leased
+ * @return the next definition stage
+ */
+ WithCreate withLeasedByLabVmId(String leasedByLabVmId);
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify ManagedDiskId.
+ */
+ interface WithManagedDiskId {
+ /**
+ * Specifies managedDiskId.
+ * @param managedDiskId When backed by managed disk, this is the ID of the compute disk resource
+ * @return the next definition stage
+ */
+ WithCreate withManagedDiskId(String managedDiskId);
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next definition stage
+ */
+ WithCreate withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the disk definition allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next definition stage
+ */
+ WithCreate withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithDiskBlobName, DefinitionStages.WithDiskSizeGiB, DefinitionStages.WithDiskType, DefinitionStages.WithDiskUri, DefinitionStages.WithHostCaching, DefinitionStages.WithLeasedByLabVmId, DefinitionStages.WithLocation, DefinitionStages.WithManagedDiskId, DefinitionStages.WithProvisioningState, DefinitionStages.WithTags, DefinitionStages.WithUniqueIdentifier {
+ }
+ }
+ /**
+ * The template for a Disk update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithDiskBlobName, UpdateStages.WithDiskSizeGiB, UpdateStages.WithDiskType, UpdateStages.WithDiskUri, UpdateStages.WithHostCaching, UpdateStages.WithLeasedByLabVmId, UpdateStages.WithLocation, UpdateStages.WithManagedDiskId, UpdateStages.WithProvisioningState, UpdateStages.WithTags, UpdateStages.WithUniqueIdentifier {
+ }
+
+ /**
+ * Grouping of Disk update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the disk update allowing to specify DiskBlobName.
+ */
+ interface WithDiskBlobName {
+ /**
+ * Specifies diskBlobName.
+ * @param diskBlobName When backed by a blob, the name of the VHD blob without extension
+ * @return the next update stage
+ */
+ Update withDiskBlobName(String diskBlobName);
+ }
+
+ /**
+ * The stage of the disk update allowing to specify DiskSizeGiB.
+ */
+ interface WithDiskSizeGiB {
+ /**
+ * Specifies diskSizeGiB.
+ * @param diskSizeGiB The size of the disk in Gibibytes
+ * @return the next update stage
+ */
+ Update withDiskSizeGiB(Integer diskSizeGiB);
+ }
+
+ /**
+ * The stage of the disk update allowing to specify DiskType.
+ */
+ interface WithDiskType {
+ /**
+ * Specifies diskType.
+ * @param diskType The storage type for the disk (i.e. Standard, Premium). Possible values include: 'Standard', 'Premium'
+ * @return the next update stage
+ */
+ Update withDiskType(StorageType diskType);
+ }
+
+ /**
+ * The stage of the disk update allowing to specify DiskUri.
+ */
+ interface WithDiskUri {
+ /**
+ * Specifies diskUri.
+ * @param diskUri When backed by a blob, the URI of underlying blob
+ * @return the next update stage
+ */
+ Update withDiskUri(String diskUri);
+ }
+
+ /**
+ * The stage of the disk update allowing to specify HostCaching.
+ */
+ interface WithHostCaching {
+ /**
+ * Specifies hostCaching.
+ * @param hostCaching The host caching policy of the disk (i.e. None, ReadOnly, ReadWrite)
+ * @return the next update stage
+ */
+ Update withHostCaching(String hostCaching);
+ }
+
+ /**
+ * The stage of the disk update allowing to specify LeasedByLabVmId.
+ */
+ interface WithLeasedByLabVmId {
+ /**
+ * Specifies leasedByLabVmId.
+ * @param leasedByLabVmId The resource ID of the VM to which this disk is leased
+ * @return the next update stage
+ */
+ Update withLeasedByLabVmId(String leasedByLabVmId);
+ }
+
+ /**
+ * The stage of the disk update allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next update stage
+ */
+ Update withLocation(String location);
+ }
+
+ /**
+ * The stage of the disk update allowing to specify ManagedDiskId.
+ */
+ interface WithManagedDiskId {
+ /**
+ * Specifies managedDiskId.
+ * @param managedDiskId When backed by managed disk, this is the ID of the compute disk resource
+ * @return the next update stage
+ */
+ Update withManagedDiskId(String managedDiskId);
+ }
+
+ /**
+ * The stage of the disk update allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next update stage
+ */
+ Update withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the disk update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the disk update allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next update stage
+ */
+ Update withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Disks.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Disks.java
new file mode 100644
index 000000000000..85966b7af9c3
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Disks.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DisksInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Disks.
+ */
+public interface Disks extends SupportsCreating, HasInner {
+ /**
+ * Attach and create the lease of the disk to the virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param userName The name of the user profile.
+ * @param name The name of the disk.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable attachAsync(String resourceGroupName, String labName, String userName, String name);
+
+ /**
+ * Detach and break the lease of the disk attached to the virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param userName The name of the user profile.
+ * @param name The name of the disk.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable detachAsync(String resourceGroupName, String labName, String userName, String name);
+
+ /**
+ * Get disk.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param userName The name of the user profile.
+ * @param name The name of the disk.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String labName, String userName, String name);
+
+ /**
+ * List disks in a given user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param userName The name of the user profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String labName, final String userName);
+
+ /**
+ * Delete disk. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param userName The name of the user profile.
+ * @param name The name of the disk.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String labName, String userName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DtlEnvironment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DtlEnvironment.java
new file mode 100644
index 000000000000..b0824011a52a
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/DtlEnvironment.java
@@ -0,0 +1,274 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DtlEnvironmentInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import java.util.Map;
+
+/**
+ * Type representing DtlEnvironment.
+ */
+public interface DtlEnvironment extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the armTemplateDisplayName value.
+ */
+ String armTemplateDisplayName();
+
+ /**
+ * @return the createdByUser value.
+ */
+ String createdByUser();
+
+ /**
+ * @return the deploymentProperties value.
+ */
+ EnvironmentDeploymentProperties deploymentProperties();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the resourceGroupId value.
+ */
+ String resourceGroupId();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the uniqueIdentifier value.
+ */
+ String uniqueIdentifier();
+
+ /**
+ * The entirety of the DtlEnvironment definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithUser, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of DtlEnvironment definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a DtlEnvironment definition.
+ */
+ interface Blank extends WithUser {
+ }
+
+ /**
+ * The stage of the dtlenvironment definition allowing to specify User.
+ */
+ interface WithUser {
+ /**
+ * Specifies resourceGroupName, labName, userName.
+ * @param resourceGroupName The name of the resource group
+ * @param labName The name of the lab
+ * @param userName The name of the user profile
+ * @return the next definition stage
+ */
+ WithCreate withExistingUser(String resourceGroupName, String labName, String userName);
+ }
+
+ /**
+ * The stage of the dtlenvironment definition allowing to specify ArmTemplateDisplayName.
+ */
+ interface WithArmTemplateDisplayName {
+ /**
+ * Specifies armTemplateDisplayName.
+ * @param armTemplateDisplayName The display name of the Azure Resource Manager template that produced the environment
+ * @return the next definition stage
+ */
+ WithCreate withArmTemplateDisplayName(String armTemplateDisplayName);
+ }
+
+ /**
+ * The stage of the dtlenvironment definition allowing to specify DeploymentProperties.
+ */
+ interface WithDeploymentProperties {
+ /**
+ * Specifies deploymentProperties.
+ * @param deploymentProperties The deployment properties of the environment
+ * @return the next definition stage
+ */
+ WithCreate withDeploymentProperties(EnvironmentDeploymentProperties deploymentProperties);
+ }
+
+ /**
+ * The stage of the dtlenvironment definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the dtlenvironment definition allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next definition stage
+ */
+ WithCreate withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the dtlenvironment definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the dtlenvironment definition allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next definition stage
+ */
+ WithCreate withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithArmTemplateDisplayName, DefinitionStages.WithDeploymentProperties, DefinitionStages.WithLocation, DefinitionStages.WithProvisioningState, DefinitionStages.WithTags, DefinitionStages.WithUniqueIdentifier {
+ }
+ }
+ /**
+ * The template for a DtlEnvironment update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithArmTemplateDisplayName, UpdateStages.WithDeploymentProperties, UpdateStages.WithLocation, UpdateStages.WithProvisioningState, UpdateStages.WithTags, UpdateStages.WithUniqueIdentifier {
+ }
+
+ /**
+ * Grouping of DtlEnvironment update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the dtlenvironment update allowing to specify ArmTemplateDisplayName.
+ */
+ interface WithArmTemplateDisplayName {
+ /**
+ * Specifies armTemplateDisplayName.
+ * @param armTemplateDisplayName The display name of the Azure Resource Manager template that produced the environment
+ * @return the next update stage
+ */
+ Update withArmTemplateDisplayName(String armTemplateDisplayName);
+ }
+
+ /**
+ * The stage of the dtlenvironment update allowing to specify DeploymentProperties.
+ */
+ interface WithDeploymentProperties {
+ /**
+ * Specifies deploymentProperties.
+ * @param deploymentProperties The deployment properties of the environment
+ * @return the next update stage
+ */
+ Update withDeploymentProperties(EnvironmentDeploymentProperties deploymentProperties);
+ }
+
+ /**
+ * The stage of the dtlenvironment update allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next update stage
+ */
+ Update withLocation(String location);
+ }
+
+ /**
+ * The stage of the dtlenvironment update allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next update stage
+ */
+ Update withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the dtlenvironment update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the dtlenvironment update allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next update stage
+ */
+ Update withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EnableStatus.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EnableStatus.java
new file mode 100644
index 000000000000..0751167ec797
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EnableStatus.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for EnableStatus.
+ */
+public final class EnableStatus extends ExpandableStringEnum {
+ /** Static value Enabled for EnableStatus. */
+ public static final EnableStatus ENABLED = fromString("Enabled");
+
+ /** Static value Disabled for EnableStatus. */
+ public static final EnableStatus DISABLED = fromString("Disabled");
+
+ /**
+ * Creates or finds a EnableStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding EnableStatus
+ */
+ @JsonCreator
+ public static EnableStatus fromString(String name) {
+ return fromString(name, EnableStatus.class);
+ }
+
+ /**
+ * @return known EnableStatus values
+ */
+ public static Collection values() {
+ return values(EnableStatus.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EnvironmentDeploymentProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EnvironmentDeploymentProperties.java
new file mode 100644
index 000000000000..dd96098659a6
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EnvironmentDeploymentProperties.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of an environment deployment.
+ */
+public class EnvironmentDeploymentProperties {
+ /**
+ * The Azure Resource Manager template's identifier.
+ */
+ @JsonProperty(value = "armTemplateId")
+ private String armTemplateId;
+
+ /**
+ * The parameters of the Azure Resource Manager template.
+ */
+ @JsonProperty(value = "parameters")
+ private List parameters;
+
+ /**
+ * Get the Azure Resource Manager template's identifier.
+ *
+ * @return the armTemplateId value
+ */
+ public String armTemplateId() {
+ return this.armTemplateId;
+ }
+
+ /**
+ * Set the Azure Resource Manager template's identifier.
+ *
+ * @param armTemplateId the armTemplateId value to set
+ * @return the EnvironmentDeploymentProperties object itself.
+ */
+ public EnvironmentDeploymentProperties withArmTemplateId(String armTemplateId) {
+ this.armTemplateId = armTemplateId;
+ return this;
+ }
+
+ /**
+ * Get the parameters of the Azure Resource Manager template.
+ *
+ * @return the parameters value
+ */
+ public List parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Set the parameters of the Azure Resource Manager template.
+ *
+ * @param parameters the parameters value to set
+ * @return the EnvironmentDeploymentProperties object itself.
+ */
+ public EnvironmentDeploymentProperties withParameters(List parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Environments.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Environments.java
new file mode 100644
index 000000000000..520da110d9e1
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Environments.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.EnvironmentsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Environments.
+ */
+public interface Environments extends SupportsCreating, HasInner {
+ /**
+ * Get environment.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param userName The name of the user profile.
+ * @param name The name of the environment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String labName, String userName, String name);
+
+ /**
+ * List environments in a given user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param userName The name of the user profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String labName, final String userName);
+
+ /**
+ * Delete environment. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param userName The name of the user profile.
+ * @param name The name of the environment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String labName, String userName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EvaluatePoliciesProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EvaluatePoliciesProperties.java
new file mode 100644
index 000000000000..7efe1e63743b
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EvaluatePoliciesProperties.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties for evaluating a policy set.
+ */
+public class EvaluatePoliciesProperties {
+ /**
+ * The fact name.
+ */
+ @JsonProperty(value = "factName")
+ private String factName;
+
+ /**
+ * The fact data.
+ */
+ @JsonProperty(value = "factData")
+ private String factData;
+
+ /**
+ * The value offset.
+ */
+ @JsonProperty(value = "valueOffset")
+ private String valueOffset;
+
+ /**
+ * Get the fact name.
+ *
+ * @return the factName value
+ */
+ public String factName() {
+ return this.factName;
+ }
+
+ /**
+ * Set the fact name.
+ *
+ * @param factName the factName value to set
+ * @return the EvaluatePoliciesProperties object itself.
+ */
+ public EvaluatePoliciesProperties withFactName(String factName) {
+ this.factName = factName;
+ return this;
+ }
+
+ /**
+ * Get the fact data.
+ *
+ * @return the factData value
+ */
+ public String factData() {
+ return this.factData;
+ }
+
+ /**
+ * Set the fact data.
+ *
+ * @param factData the factData value to set
+ * @return the EvaluatePoliciesProperties object itself.
+ */
+ public EvaluatePoliciesProperties withFactData(String factData) {
+ this.factData = factData;
+ return this;
+ }
+
+ /**
+ * Get the value offset.
+ *
+ * @return the valueOffset value
+ */
+ public String valueOffset() {
+ return this.valueOffset;
+ }
+
+ /**
+ * Set the value offset.
+ *
+ * @param valueOffset the valueOffset value to set
+ * @return the EvaluatePoliciesProperties object itself.
+ */
+ public EvaluatePoliciesProperties withValueOffset(String valueOffset) {
+ this.valueOffset = valueOffset;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EvaluatePoliciesRequest.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EvaluatePoliciesRequest.java
new file mode 100644
index 000000000000..919c0bb9eb19
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EvaluatePoliciesRequest.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Request body for evaluating a policy set.
+ */
+public class EvaluatePoliciesRequest {
+ /**
+ * Policies to evaluate.
+ */
+ @JsonProperty(value = "policies")
+ private List policies;
+
+ /**
+ * Get policies to evaluate.
+ *
+ * @return the policies value
+ */
+ public List policies() {
+ return this.policies;
+ }
+
+ /**
+ * Set policies to evaluate.
+ *
+ * @param policies the policies value to set
+ * @return the EvaluatePoliciesRequest object itself.
+ */
+ public EvaluatePoliciesRequest withPolicies(List policies) {
+ this.policies = policies;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EvaluatePoliciesResponse.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EvaluatePoliciesResponse.java
new file mode 100644
index 000000000000..426d8bbd842c
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EvaluatePoliciesResponse.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.EvaluatePoliciesResponseInner;
+import java.util.List;
+
+/**
+ * Type representing EvaluatePoliciesResponse.
+ */
+public interface EvaluatePoliciesResponse extends HasInner, HasManager {
+ /**
+ * @return the results value.
+ */
+ List results();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Event.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Event.java
new file mode 100644
index 000000000000..36c9e83d1aa7
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Event.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * An event to be notified for.
+ */
+public class Event {
+ /**
+ * The event type for which this notification is enabled (i.e.
+ * AutoShutdown, Cost). Possible values include: 'AutoShutdown', 'Cost'.
+ */
+ @JsonProperty(value = "eventName")
+ private NotificationChannelEventType eventName;
+
+ /**
+ * Get the event type for which this notification is enabled (i.e. AutoShutdown, Cost). Possible values include: 'AutoShutdown', 'Cost'.
+ *
+ * @return the eventName value
+ */
+ public NotificationChannelEventType eventName() {
+ return this.eventName;
+ }
+
+ /**
+ * Set the event type for which this notification is enabled (i.e. AutoShutdown, Cost). Possible values include: 'AutoShutdown', 'Cost'.
+ *
+ * @param eventName the eventName value to set
+ * @return the Event object itself.
+ */
+ public Event withEventName(NotificationChannelEventType eventName) {
+ this.eventName = eventName;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EventFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EventFragment.java
new file mode 100644
index 000000000000..39397104ab57
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/EventFragment.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * An event to be notified for.
+ */
+public class EventFragment {
+ /**
+ * The event type for which this notification is enabled (i.e.
+ * AutoShutdown, Cost). Possible values include: 'AutoShutdown', 'Cost'.
+ */
+ @JsonProperty(value = "eventName")
+ private NotificationChannelEventType eventName;
+
+ /**
+ * Get the event type for which this notification is enabled (i.e. AutoShutdown, Cost). Possible values include: 'AutoShutdown', 'Cost'.
+ *
+ * @return the eventName value
+ */
+ public NotificationChannelEventType eventName() {
+ return this.eventName;
+ }
+
+ /**
+ * Set the event type for which this notification is enabled (i.e. AutoShutdown, Cost). Possible values include: 'AutoShutdown', 'Cost'.
+ *
+ * @param eventName the eventName value to set
+ * @return the EventFragment object itself.
+ */
+ public EventFragment withEventName(NotificationChannelEventType eventName) {
+ this.eventName = eventName;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ExportResourceUsageParameters.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ExportResourceUsageParameters.java
new file mode 100644
index 000000000000..cb3cce01c4a3
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ExportResourceUsageParameters.java
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The parameters of the export operation.
+ */
+public class ExportResourceUsageParameters {
+ /**
+ * The blob storage absolute sas uri with write permission to the container
+ * which the usage data needs to be uploaded to.
+ */
+ @JsonProperty(value = "blobStorageAbsoluteSasUri")
+ private String blobStorageAbsoluteSasUri;
+
+ /**
+ * The start time of the usage. If not provided, usage will be reported
+ * since the beginning of data collection.
+ */
+ @JsonProperty(value = "usageStartDate")
+ private DateTime usageStartDate;
+
+ /**
+ * Get the blob storage absolute sas uri with write permission to the container which the usage data needs to be uploaded to.
+ *
+ * @return the blobStorageAbsoluteSasUri value
+ */
+ public String blobStorageAbsoluteSasUri() {
+ return this.blobStorageAbsoluteSasUri;
+ }
+
+ /**
+ * Set the blob storage absolute sas uri with write permission to the container which the usage data needs to be uploaded to.
+ *
+ * @param blobStorageAbsoluteSasUri the blobStorageAbsoluteSasUri value to set
+ * @return the ExportResourceUsageParameters object itself.
+ */
+ public ExportResourceUsageParameters withBlobStorageAbsoluteSasUri(String blobStorageAbsoluteSasUri) {
+ this.blobStorageAbsoluteSasUri = blobStorageAbsoluteSasUri;
+ return this;
+ }
+
+ /**
+ * Get the start time of the usage. If not provided, usage will be reported since the beginning of data collection.
+ *
+ * @return the usageStartDate value
+ */
+ public DateTime usageStartDate() {
+ return this.usageStartDate;
+ }
+
+ /**
+ * Set the start time of the usage. If not provided, usage will be reported since the beginning of data collection.
+ *
+ * @param usageStartDate the usageStartDate value to set
+ * @return the ExportResourceUsageParameters object itself.
+ */
+ public ExportResourceUsageParameters withUsageStartDate(DateTime usageStartDate) {
+ this.usageStartDate = usageStartDate;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ExternalSubnet.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ExternalSubnet.java
new file mode 100644
index 000000000000..b2fc05858bb0
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ExternalSubnet.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Subnet information as returned by the Microsoft.Network API.
+ */
+public class ExternalSubnet {
+ /**
+ * Gets or sets the identifier.
+ */
+ @JsonProperty(value = "id")
+ private String id;
+
+ /**
+ * Gets or sets the name.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * Get gets or sets the identifier.
+ *
+ * @return the id value
+ */
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Set gets or sets the identifier.
+ *
+ * @param id the id value to set
+ * @return the ExternalSubnet object itself.
+ */
+ public ExternalSubnet withId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * Get gets or sets the name.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set gets or sets the name.
+ *
+ * @param name the name value to set
+ * @return the ExternalSubnet object itself.
+ */
+ public ExternalSubnet withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ExternalSubnetFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ExternalSubnetFragment.java
new file mode 100644
index 000000000000..6d57a31d9673
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ExternalSubnetFragment.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Subnet information as returned by the Microsoft.Network API.
+ */
+public class ExternalSubnetFragment {
+ /**
+ * Gets or sets the identifier.
+ */
+ @JsonProperty(value = "id")
+ private String id;
+
+ /**
+ * Gets or sets the name.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * Get gets or sets the identifier.
+ *
+ * @return the id value
+ */
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Set gets or sets the identifier.
+ *
+ * @param id the id value to set
+ * @return the ExternalSubnetFragment object itself.
+ */
+ public ExternalSubnetFragment withId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * Get gets or sets the name.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set gets or sets the name.
+ *
+ * @param name the name value to set
+ * @return the ExternalSubnetFragment object itself.
+ */
+ public ExternalSubnetFragment withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/FileUploadOptions.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/FileUploadOptions.java
new file mode 100644
index 000000000000..c459e56caa40
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/FileUploadOptions.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for FileUploadOptions.
+ */
+public final class FileUploadOptions extends ExpandableStringEnum {
+ /** Static value UploadFilesAndGenerateSasTokens for FileUploadOptions. */
+ public static final FileUploadOptions UPLOAD_FILES_AND_GENERATE_SAS_TOKENS = fromString("UploadFilesAndGenerateSasTokens");
+
+ /** Static value None for FileUploadOptions. */
+ public static final FileUploadOptions NONE = fromString("None");
+
+ /**
+ * Creates or finds a FileUploadOptions from its string representation.
+ * @param name a name to look for
+ * @return the corresponding FileUploadOptions
+ */
+ @JsonCreator
+ public static FileUploadOptions fromString(String name) {
+ return fromString(name, FileUploadOptions.class);
+ }
+
+ /**
+ * @return known FileUploadOptions values
+ */
+ public static Collection values() {
+ return values(FileUploadOptions.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Formula.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Formula.java
new file mode 100644
index 000000000000..48954af6e617
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Formula.java
@@ -0,0 +1,356 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.FormulaInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing Formula.
+ */
+public interface Formula extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the author value.
+ */
+ String author();
+
+ /**
+ * @return the creationDate value.
+ */
+ DateTime creationDate();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the formulaContent value.
+ */
+ LabVirtualMachineCreationParameter formulaContent();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the osType value.
+ */
+ String osType();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the uniqueIdentifier value.
+ */
+ String uniqueIdentifier();
+
+ /**
+ * @return the vm value.
+ */
+ FormulaPropertiesFromVm vm();
+
+ /**
+ * The entirety of the Formula definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of Formula definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a Formula definition.
+ */
+ interface Blank extends WithLab {
+ }
+
+ /**
+ * The stage of the formula definition allowing to specify Lab.
+ */
+ interface WithLab {
+ /**
+ * Specifies resourceGroupName, labName.
+ * @param resourceGroupName The name of the resource group
+ * @param labName The name of the lab
+ * @return the next definition stage
+ */
+ WithCreate withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the formula definition allowing to specify Author.
+ */
+ interface WithAuthor {
+ /**
+ * Specifies author.
+ * @param author The author of the formula
+ * @return the next definition stage
+ */
+ WithCreate withAuthor(String author);
+ }
+
+ /**
+ * The stage of the formula definition allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description The description of the formula
+ * @return the next definition stage
+ */
+ WithCreate withDescription(String description);
+ }
+
+ /**
+ * The stage of the formula definition allowing to specify FormulaContent.
+ */
+ interface WithFormulaContent {
+ /**
+ * Specifies formulaContent.
+ * @param formulaContent The content of the formula
+ * @return the next definition stage
+ */
+ WithCreate withFormulaContent(LabVirtualMachineCreationParameter formulaContent);
+ }
+
+ /**
+ * The stage of the formula definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the formula definition allowing to specify OsType.
+ */
+ interface WithOsType {
+ /**
+ * Specifies osType.
+ * @param osType The OS type of the formula
+ * @return the next definition stage
+ */
+ WithCreate withOsType(String osType);
+ }
+
+ /**
+ * The stage of the formula definition allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next definition stage
+ */
+ WithCreate withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the formula definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the formula definition allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next definition stage
+ */
+ WithCreate withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the formula definition allowing to specify Vm.
+ */
+ interface WithVm {
+ /**
+ * Specifies vm.
+ * @param vm Information about a VM from which a formula is to be created
+ * @return the next definition stage
+ */
+ WithCreate withVm(FormulaPropertiesFromVm vm);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithAuthor, DefinitionStages.WithDescription, DefinitionStages.WithFormulaContent, DefinitionStages.WithLocation, DefinitionStages.WithOsType, DefinitionStages.WithProvisioningState, DefinitionStages.WithTags, DefinitionStages.WithUniqueIdentifier, DefinitionStages.WithVm {
+ }
+ }
+ /**
+ * The template for a Formula update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithAuthor, UpdateStages.WithDescription, UpdateStages.WithFormulaContent, UpdateStages.WithLocation, UpdateStages.WithOsType, UpdateStages.WithProvisioningState, UpdateStages.WithTags, UpdateStages.WithUniqueIdentifier, UpdateStages.WithVm {
+ }
+
+ /**
+ * Grouping of Formula update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the formula update allowing to specify Author.
+ */
+ interface WithAuthor {
+ /**
+ * Specifies author.
+ * @param author The author of the formula
+ * @return the next update stage
+ */
+ Update withAuthor(String author);
+ }
+
+ /**
+ * The stage of the formula update allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description The description of the formula
+ * @return the next update stage
+ */
+ Update withDescription(String description);
+ }
+
+ /**
+ * The stage of the formula update allowing to specify FormulaContent.
+ */
+ interface WithFormulaContent {
+ /**
+ * Specifies formulaContent.
+ * @param formulaContent The content of the formula
+ * @return the next update stage
+ */
+ Update withFormulaContent(LabVirtualMachineCreationParameter formulaContent);
+ }
+
+ /**
+ * The stage of the formula update allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next update stage
+ */
+ Update withLocation(String location);
+ }
+
+ /**
+ * The stage of the formula update allowing to specify OsType.
+ */
+ interface WithOsType {
+ /**
+ * Specifies osType.
+ * @param osType The OS type of the formula
+ * @return the next update stage
+ */
+ Update withOsType(String osType);
+ }
+
+ /**
+ * The stage of the formula update allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next update stage
+ */
+ Update withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the formula update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the formula update allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next update stage
+ */
+ Update withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the formula update allowing to specify Vm.
+ */
+ interface WithVm {
+ /**
+ * Specifies vm.
+ * @param vm Information about a VM from which a formula is to be created
+ * @return the next update stage
+ */
+ Update withVm(FormulaPropertiesFromVm vm);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/FormulaPropertiesFromVm.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/FormulaPropertiesFromVm.java
new file mode 100644
index 000000000000..87f308316367
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/FormulaPropertiesFromVm.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Information about a VM from which a formula is to be created.
+ */
+public class FormulaPropertiesFromVm {
+ /**
+ * The identifier of the VM from which a formula is to be created.
+ */
+ @JsonProperty(value = "labVmId")
+ private String labVmId;
+
+ /**
+ * Get the identifier of the VM from which a formula is to be created.
+ *
+ * @return the labVmId value
+ */
+ public String labVmId() {
+ return this.labVmId;
+ }
+
+ /**
+ * Set the identifier of the VM from which a formula is to be created.
+ *
+ * @param labVmId the labVmId value to set
+ * @return the FormulaPropertiesFromVm object itself.
+ */
+ public FormulaPropertiesFromVm withLabVmId(String labVmId) {
+ this.labVmId = labVmId;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Formulas.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Formulas.java
new file mode 100644
index 000000000000..221d6b47cbd7
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Formulas.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.FormulasInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Formulas.
+ */
+public interface Formulas extends SupportsCreating, HasInner {
+ /**
+ * Get formula.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List formulas in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String labName);
+
+ /**
+ * Delete formula.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImage.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImage.java
new file mode 100644
index 000000000000..3fec0b670cfd
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImage.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.GalleryImageInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import org.joda.time.DateTime;
+import java.util.Map;
+
+/**
+ * Type representing GalleryImage.
+ */
+public interface GalleryImage extends HasInner, HasManager {
+ /**
+ * @return the author value.
+ */
+ String author();
+
+ /**
+ * @return the createdDate value.
+ */
+ DateTime createdDate();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the enabled value.
+ */
+ Boolean enabled();
+
+ /**
+ * @return the icon value.
+ */
+ String icon();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the imageReference value.
+ */
+ GalleryImageReference imageReference();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImageReference.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImageReference.java
new file mode 100644
index 000000000000..af07b7e1a947
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImageReference.java
@@ -0,0 +1,147 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The reference information for an Azure Marketplace image.
+ */
+public class GalleryImageReference {
+ /**
+ * The offer of the gallery image.
+ */
+ @JsonProperty(value = "offer")
+ private String offer;
+
+ /**
+ * The publisher of the gallery image.
+ */
+ @JsonProperty(value = "publisher")
+ private String publisher;
+
+ /**
+ * The SKU of the gallery image.
+ */
+ @JsonProperty(value = "sku")
+ private String sku;
+
+ /**
+ * The OS type of the gallery image.
+ */
+ @JsonProperty(value = "osType")
+ private String osType;
+
+ /**
+ * The version of the gallery image.
+ */
+ @JsonProperty(value = "version")
+ private String version;
+
+ /**
+ * Get the offer of the gallery image.
+ *
+ * @return the offer value
+ */
+ public String offer() {
+ return this.offer;
+ }
+
+ /**
+ * Set the offer of the gallery image.
+ *
+ * @param offer the offer value to set
+ * @return the GalleryImageReference object itself.
+ */
+ public GalleryImageReference withOffer(String offer) {
+ this.offer = offer;
+ return this;
+ }
+
+ /**
+ * Get the publisher of the gallery image.
+ *
+ * @return the publisher value
+ */
+ public String publisher() {
+ return this.publisher;
+ }
+
+ /**
+ * Set the publisher of the gallery image.
+ *
+ * @param publisher the publisher value to set
+ * @return the GalleryImageReference object itself.
+ */
+ public GalleryImageReference withPublisher(String publisher) {
+ this.publisher = publisher;
+ return this;
+ }
+
+ /**
+ * Get the SKU of the gallery image.
+ *
+ * @return the sku value
+ */
+ public String sku() {
+ return this.sku;
+ }
+
+ /**
+ * Set the SKU of the gallery image.
+ *
+ * @param sku the sku value to set
+ * @return the GalleryImageReference object itself.
+ */
+ public GalleryImageReference withSku(String sku) {
+ this.sku = sku;
+ return this;
+ }
+
+ /**
+ * Get the OS type of the gallery image.
+ *
+ * @return the osType value
+ */
+ public String osType() {
+ return this.osType;
+ }
+
+ /**
+ * Set the OS type of the gallery image.
+ *
+ * @param osType the osType value to set
+ * @return the GalleryImageReference object itself.
+ */
+ public GalleryImageReference withOsType(String osType) {
+ this.osType = osType;
+ return this;
+ }
+
+ /**
+ * Get the version of the gallery image.
+ *
+ * @return the version value
+ */
+ public String version() {
+ return this.version;
+ }
+
+ /**
+ * Set the version of the gallery image.
+ *
+ * @param version the version value to set
+ * @return the GalleryImageReference object itself.
+ */
+ public GalleryImageReference withVersion(String version) {
+ this.version = version;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImageReferenceFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImageReferenceFragment.java
new file mode 100644
index 000000000000..abafd0a39428
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImageReferenceFragment.java
@@ -0,0 +1,147 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The reference information for an Azure Marketplace image.
+ */
+public class GalleryImageReferenceFragment {
+ /**
+ * The offer of the gallery image.
+ */
+ @JsonProperty(value = "offer")
+ private String offer;
+
+ /**
+ * The publisher of the gallery image.
+ */
+ @JsonProperty(value = "publisher")
+ private String publisher;
+
+ /**
+ * The SKU of the gallery image.
+ */
+ @JsonProperty(value = "sku")
+ private String sku;
+
+ /**
+ * The OS type of the gallery image.
+ */
+ @JsonProperty(value = "osType")
+ private String osType;
+
+ /**
+ * The version of the gallery image.
+ */
+ @JsonProperty(value = "version")
+ private String version;
+
+ /**
+ * Get the offer of the gallery image.
+ *
+ * @return the offer value
+ */
+ public String offer() {
+ return this.offer;
+ }
+
+ /**
+ * Set the offer of the gallery image.
+ *
+ * @param offer the offer value to set
+ * @return the GalleryImageReferenceFragment object itself.
+ */
+ public GalleryImageReferenceFragment withOffer(String offer) {
+ this.offer = offer;
+ return this;
+ }
+
+ /**
+ * Get the publisher of the gallery image.
+ *
+ * @return the publisher value
+ */
+ public String publisher() {
+ return this.publisher;
+ }
+
+ /**
+ * Set the publisher of the gallery image.
+ *
+ * @param publisher the publisher value to set
+ * @return the GalleryImageReferenceFragment object itself.
+ */
+ public GalleryImageReferenceFragment withPublisher(String publisher) {
+ this.publisher = publisher;
+ return this;
+ }
+
+ /**
+ * Get the SKU of the gallery image.
+ *
+ * @return the sku value
+ */
+ public String sku() {
+ return this.sku;
+ }
+
+ /**
+ * Set the SKU of the gallery image.
+ *
+ * @param sku the sku value to set
+ * @return the GalleryImageReferenceFragment object itself.
+ */
+ public GalleryImageReferenceFragment withSku(String sku) {
+ this.sku = sku;
+ return this;
+ }
+
+ /**
+ * Get the OS type of the gallery image.
+ *
+ * @return the osType value
+ */
+ public String osType() {
+ return this.osType;
+ }
+
+ /**
+ * Set the OS type of the gallery image.
+ *
+ * @param osType the osType value to set
+ * @return the GalleryImageReferenceFragment object itself.
+ */
+ public GalleryImageReferenceFragment withOsType(String osType) {
+ this.osType = osType;
+ return this;
+ }
+
+ /**
+ * Get the version of the gallery image.
+ *
+ * @return the version value
+ */
+ public String version() {
+ return this.version;
+ }
+
+ /**
+ * Set the version of the gallery image.
+ *
+ * @param version the version value to set
+ * @return the GalleryImageReferenceFragment object itself.
+ */
+ public GalleryImageReferenceFragment withVersion(String version) {
+ this.version = version;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImages.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImages.java
new file mode 100644
index 000000000000..aa55f58a78c1
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GalleryImages.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.GalleryImagesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing GalleryImages.
+ */
+public interface GalleryImages extends HasInner {
+ /**
+ * List gallery images in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String labName);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GenerateArmTemplateRequest.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GenerateArmTemplateRequest.java
new file mode 100644
index 000000000000..740e26ff0f52
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GenerateArmTemplateRequest.java
@@ -0,0 +1,124 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Parameters for generating an ARM template for deploying artifacts.
+ */
+public class GenerateArmTemplateRequest {
+ /**
+ * The resource name of the virtual machine.
+ */
+ @JsonProperty(value = "virtualMachineName")
+ private String virtualMachineName;
+
+ /**
+ * The parameters of the ARM template.
+ */
+ @JsonProperty(value = "parameters")
+ private List parameters;
+
+ /**
+ * The location of the virtual machine.
+ */
+ @JsonProperty(value = "location")
+ private String location;
+
+ /**
+ * Options for uploading the files for the artifact.
+ * UploadFilesAndGenerateSasTokens is the default value. Possible values
+ * include: 'UploadFilesAndGenerateSasTokens', 'None'.
+ */
+ @JsonProperty(value = "fileUploadOptions")
+ private FileUploadOptions fileUploadOptions;
+
+ /**
+ * Get the resource name of the virtual machine.
+ *
+ * @return the virtualMachineName value
+ */
+ public String virtualMachineName() {
+ return this.virtualMachineName;
+ }
+
+ /**
+ * Set the resource name of the virtual machine.
+ *
+ * @param virtualMachineName the virtualMachineName value to set
+ * @return the GenerateArmTemplateRequest object itself.
+ */
+ public GenerateArmTemplateRequest withVirtualMachineName(String virtualMachineName) {
+ this.virtualMachineName = virtualMachineName;
+ return this;
+ }
+
+ /**
+ * Get the parameters of the ARM template.
+ *
+ * @return the parameters value
+ */
+ public List parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Set the parameters of the ARM template.
+ *
+ * @param parameters the parameters value to set
+ * @return the GenerateArmTemplateRequest object itself.
+ */
+ public GenerateArmTemplateRequest withParameters(List parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+
+ /**
+ * Get the location of the virtual machine.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set the location of the virtual machine.
+ *
+ * @param location the location value to set
+ * @return the GenerateArmTemplateRequest object itself.
+ */
+ public GenerateArmTemplateRequest withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get options for uploading the files for the artifact. UploadFilesAndGenerateSasTokens is the default value. Possible values include: 'UploadFilesAndGenerateSasTokens', 'None'.
+ *
+ * @return the fileUploadOptions value
+ */
+ public FileUploadOptions fileUploadOptions() {
+ return this.fileUploadOptions;
+ }
+
+ /**
+ * Set options for uploading the files for the artifact. UploadFilesAndGenerateSasTokens is the default value. Possible values include: 'UploadFilesAndGenerateSasTokens', 'None'.
+ *
+ * @param fileUploadOptions the fileUploadOptions value to set
+ * @return the GenerateArmTemplateRequest object itself.
+ */
+ public GenerateArmTemplateRequest withFileUploadOptions(FileUploadOptions fileUploadOptions) {
+ this.fileUploadOptions = fileUploadOptions;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GenerateUploadUriParameter.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GenerateUploadUriParameter.java
new file mode 100644
index 000000000000..692dad74d4b9
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GenerateUploadUriParameter.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties for generating an upload URI.
+ */
+public class GenerateUploadUriParameter {
+ /**
+ * The blob name of the upload URI.
+ */
+ @JsonProperty(value = "blobName")
+ private String blobName;
+
+ /**
+ * Get the blob name of the upload URI.
+ *
+ * @return the blobName value
+ */
+ public String blobName() {
+ return this.blobName;
+ }
+
+ /**
+ * Set the blob name of the upload URI.
+ *
+ * @param blobName the blobName value to set
+ * @return the GenerateUploadUriParameter object itself.
+ */
+ public GenerateUploadUriParameter withBlobName(String blobName) {
+ this.blobName = blobName;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GenerateUploadUriResponse.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GenerateUploadUriResponse.java
new file mode 100644
index 000000000000..13eed6c033c9
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GenerateUploadUriResponse.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.GenerateUploadUriResponseInner;
+
+/**
+ * Type representing GenerateUploadUriResponse.
+ */
+public interface GenerateUploadUriResponse extends HasInner, HasManager {
+ /**
+ * @return the uploadUri value.
+ */
+ String uploadUri();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GlobalSchedules.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GlobalSchedules.java
new file mode 100644
index 000000000000..fcdafc829602
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/GlobalSchedules.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import com.microsoft.azure.arm.resources.collection.SupportsDeletingByResourceGroup;
+import com.microsoft.azure.arm.resources.collection.SupportsBatchDeletion;
+import com.microsoft.azure.arm.resources.collection.SupportsGettingByResourceGroup;
+import rx.Observable;
+import com.microsoft.azure.arm.resources.collection.SupportsListingByResourceGroup;
+import com.microsoft.azure.arm.collection.SupportsListing;
+import rx.Completable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.GlobalSchedulesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing GlobalSchedules.
+ */
+public interface GlobalSchedules extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner {
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable executeAsync(String resourceGroupName, String name);
+
+ /**
+ * Updates a schedule's target resource Id. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param retargetScheduleProperties Properties for retargeting a virtual machine schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable retargetAsync(String resourceGroupName, String name, RetargetScheduleProperties retargetScheduleProperties);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HostCachingOptions.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HostCachingOptions.java
new file mode 100644
index 000000000000..6acfd8516bea
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HostCachingOptions.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for HostCachingOptions.
+ */
+public final class HostCachingOptions extends ExpandableStringEnum {
+ /** Static value None for HostCachingOptions. */
+ public static final HostCachingOptions NONE = fromString("None");
+
+ /** Static value ReadOnly for HostCachingOptions. */
+ public static final HostCachingOptions READ_ONLY = fromString("ReadOnly");
+
+ /** Static value ReadWrite for HostCachingOptions. */
+ public static final HostCachingOptions READ_WRITE = fromString("ReadWrite");
+
+ /**
+ * Creates or finds a HostCachingOptions from its string representation.
+ * @param name a name to look for
+ * @return the corresponding HostCachingOptions
+ */
+ @JsonCreator
+ public static HostCachingOptions fromString(String name) {
+ return fromString(name, HostCachingOptions.class);
+ }
+
+ /**
+ * @return known HostCachingOptions values
+ */
+ public static Collection values() {
+ return values(HostCachingOptions.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HourDetails.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HourDetails.java
new file mode 100644
index 000000000000..85c8a355fb6b
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HourDetails.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of an hourly schedule.
+ */
+public class HourDetails {
+ /**
+ * Minutes of the hour the schedule will run.
+ */
+ @JsonProperty(value = "minute")
+ private Integer minute;
+
+ /**
+ * Get minutes of the hour the schedule will run.
+ *
+ * @return the minute value
+ */
+ public Integer minute() {
+ return this.minute;
+ }
+
+ /**
+ * Set minutes of the hour the schedule will run.
+ *
+ * @param minute the minute value to set
+ * @return the HourDetails object itself.
+ */
+ public HourDetails withMinute(Integer minute) {
+ this.minute = minute;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HourDetailsFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HourDetailsFragment.java
new file mode 100644
index 000000000000..f8d758d765f7
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HourDetailsFragment.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of an hourly schedule.
+ */
+public class HourDetailsFragment {
+ /**
+ * Minutes of the hour the schedule will run.
+ */
+ @JsonProperty(value = "minute")
+ private Integer minute;
+
+ /**
+ * Get minutes of the hour the schedule will run.
+ *
+ * @return the minute value
+ */
+ public Integer minute() {
+ return this.minute;
+ }
+
+ /**
+ * Set minutes of the hour the schedule will run.
+ *
+ * @param minute the minute value to set
+ * @return the HourDetailsFragment object itself.
+ */
+ public HourDetailsFragment withMinute(Integer minute) {
+ this.minute = minute;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HttpStatusCode.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HttpStatusCode.java
new file mode 100644
index 000000000000..ddfcec574bb2
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/HttpStatusCode.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for HttpStatusCode.
+ */
+public final class HttpStatusCode extends ExpandableStringEnum {
+ /** Static value Continue for HttpStatusCode. */
+ public static final HttpStatusCode CONTINUE = fromString("Continue");
+
+ /** Static value SwitchingProtocols for HttpStatusCode. */
+ public static final HttpStatusCode SWITCHING_PROTOCOLS = fromString("SwitchingProtocols");
+
+ /** Static value OK for HttpStatusCode. */
+ public static final HttpStatusCode OK = fromString("OK");
+
+ /** Static value Created for HttpStatusCode. */
+ public static final HttpStatusCode CREATED = fromString("Created");
+
+ /** Static value Accepted for HttpStatusCode. */
+ public static final HttpStatusCode ACCEPTED = fromString("Accepted");
+
+ /** Static value NonAuthoritativeInformation for HttpStatusCode. */
+ public static final HttpStatusCode NON_AUTHORITATIVE_INFORMATION = fromString("NonAuthoritativeInformation");
+
+ /** Static value NoContent for HttpStatusCode. */
+ public static final HttpStatusCode NO_CONTENT = fromString("NoContent");
+
+ /** Static value ResetContent for HttpStatusCode. */
+ public static final HttpStatusCode RESET_CONTENT = fromString("ResetContent");
+
+ /** Static value PartialContent for HttpStatusCode. */
+ public static final HttpStatusCode PARTIAL_CONTENT = fromString("PartialContent");
+
+ /** Static value MultipleChoices for HttpStatusCode. */
+ public static final HttpStatusCode MULTIPLE_CHOICES = fromString("MultipleChoices");
+
+ /** Static value MovedPermanently for HttpStatusCode. */
+ public static final HttpStatusCode MOVED_PERMANENTLY = fromString("MovedPermanently");
+
+ /** Static value Redirect for HttpStatusCode. */
+ public static final HttpStatusCode REDIRECT = fromString("Redirect");
+
+ /** Static value SeeOther for HttpStatusCode. */
+ public static final HttpStatusCode SEE_OTHER = fromString("SeeOther");
+
+ /** Static value NotModified for HttpStatusCode. */
+ public static final HttpStatusCode NOT_MODIFIED = fromString("NotModified");
+
+ /** Static value UseProxy for HttpStatusCode. */
+ public static final HttpStatusCode USE_PROXY = fromString("UseProxy");
+
+ /** Static value Unused for HttpStatusCode. */
+ public static final HttpStatusCode UNUSED = fromString("Unused");
+
+ /** Static value TemporaryRedirect for HttpStatusCode. */
+ public static final HttpStatusCode TEMPORARY_REDIRECT = fromString("TemporaryRedirect");
+
+ /** Static value BadRequest for HttpStatusCode. */
+ public static final HttpStatusCode BAD_REQUEST = fromString("BadRequest");
+
+ /** Static value Unauthorized for HttpStatusCode. */
+ public static final HttpStatusCode UNAUTHORIZED = fromString("Unauthorized");
+
+ /** Static value PaymentRequired for HttpStatusCode. */
+ public static final HttpStatusCode PAYMENT_REQUIRED = fromString("PaymentRequired");
+
+ /** Static value Forbidden for HttpStatusCode. */
+ public static final HttpStatusCode FORBIDDEN = fromString("Forbidden");
+
+ /** Static value NotFound for HttpStatusCode. */
+ public static final HttpStatusCode NOT_FOUND = fromString("NotFound");
+
+ /** Static value MethodNotAllowed for HttpStatusCode. */
+ public static final HttpStatusCode METHOD_NOT_ALLOWED = fromString("MethodNotAllowed");
+
+ /** Static value NotAcceptable for HttpStatusCode. */
+ public static final HttpStatusCode NOT_ACCEPTABLE = fromString("NotAcceptable");
+
+ /** Static value ProxyAuthenticationRequired for HttpStatusCode. */
+ public static final HttpStatusCode PROXY_AUTHENTICATION_REQUIRED = fromString("ProxyAuthenticationRequired");
+
+ /** Static value RequestTimeout for HttpStatusCode. */
+ public static final HttpStatusCode REQUEST_TIMEOUT = fromString("RequestTimeout");
+
+ /** Static value Conflict for HttpStatusCode. */
+ public static final HttpStatusCode CONFLICT = fromString("Conflict");
+
+ /** Static value Gone for HttpStatusCode. */
+ public static final HttpStatusCode GONE = fromString("Gone");
+
+ /** Static value LengthRequired for HttpStatusCode. */
+ public static final HttpStatusCode LENGTH_REQUIRED = fromString("LengthRequired");
+
+ /** Static value PreconditionFailed for HttpStatusCode. */
+ public static final HttpStatusCode PRECONDITION_FAILED = fromString("PreconditionFailed");
+
+ /** Static value RequestEntityTooLarge for HttpStatusCode. */
+ public static final HttpStatusCode REQUEST_ENTITY_TOO_LARGE = fromString("RequestEntityTooLarge");
+
+ /** Static value RequestUriTooLong for HttpStatusCode. */
+ public static final HttpStatusCode REQUEST_URI_TOO_LONG = fromString("RequestUriTooLong");
+
+ /** Static value UnsupportedMediaType for HttpStatusCode. */
+ public static final HttpStatusCode UNSUPPORTED_MEDIA_TYPE = fromString("UnsupportedMediaType");
+
+ /** Static value RequestedRangeNotSatisfiable for HttpStatusCode. */
+ public static final HttpStatusCode REQUESTED_RANGE_NOT_SATISFIABLE = fromString("RequestedRangeNotSatisfiable");
+
+ /** Static value ExpectationFailed for HttpStatusCode. */
+ public static final HttpStatusCode EXPECTATION_FAILED = fromString("ExpectationFailed");
+
+ /** Static value UpgradeRequired for HttpStatusCode. */
+ public static final HttpStatusCode UPGRADE_REQUIRED = fromString("UpgradeRequired");
+
+ /** Static value InternalServerError for HttpStatusCode. */
+ public static final HttpStatusCode INTERNAL_SERVER_ERROR = fromString("InternalServerError");
+
+ /** Static value NotImplemented for HttpStatusCode. */
+ public static final HttpStatusCode NOT_IMPLEMENTED = fromString("NotImplemented");
+
+ /** Static value BadGateway for HttpStatusCode. */
+ public static final HttpStatusCode BAD_GATEWAY = fromString("BadGateway");
+
+ /** Static value ServiceUnavailable for HttpStatusCode. */
+ public static final HttpStatusCode SERVICE_UNAVAILABLE = fromString("ServiceUnavailable");
+
+ /** Static value GatewayTimeout for HttpStatusCode. */
+ public static final HttpStatusCode GATEWAY_TIMEOUT = fromString("GatewayTimeout");
+
+ /** Static value HttpVersionNotSupported for HttpStatusCode. */
+ public static final HttpStatusCode HTTP_VERSION_NOT_SUPPORTED = fromString("HttpVersionNotSupported");
+
+ /**
+ * Creates or finds a HttpStatusCode from its string representation.
+ * @param name a name to look for
+ * @return the corresponding HttpStatusCode
+ */
+ @JsonCreator
+ public static HttpStatusCode fromString(String name) {
+ return fromString(name, HttpStatusCode.class);
+ }
+
+ /**
+ * @return known HttpStatusCode values
+ */
+ public static Collection values() {
+ return values(HttpStatusCode.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/IdentityProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/IdentityProperties.java
new file mode 100644
index 000000000000..41d3d5aed707
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/IdentityProperties.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of a managed identity.
+ */
+public class IdentityProperties {
+ /**
+ * Managed identity.
+ */
+ @JsonProperty(value = "type")
+ private String type;
+
+ /**
+ * The principal id of resource identity.
+ */
+ @JsonProperty(value = "principalId")
+ private String principalId;
+
+ /**
+ * The tenant identifier of resource.
+ */
+ @JsonProperty(value = "tenantId")
+ private String tenantId;
+
+ /**
+ * The client secret URL of the identity.
+ */
+ @JsonProperty(value = "clientSecretUrl")
+ private String clientSecretUrl;
+
+ /**
+ * Get managed identity.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Set managed identity.
+ *
+ * @param type the type value to set
+ * @return the IdentityProperties object itself.
+ */
+ public IdentityProperties withType(String type) {
+ this.type = type;
+ return this;
+ }
+
+ /**
+ * Get the principal id of resource identity.
+ *
+ * @return the principalId value
+ */
+ public String principalId() {
+ return this.principalId;
+ }
+
+ /**
+ * Set the principal id of resource identity.
+ *
+ * @param principalId the principalId value to set
+ * @return the IdentityProperties object itself.
+ */
+ public IdentityProperties withPrincipalId(String principalId) {
+ this.principalId = principalId;
+ return this;
+ }
+
+ /**
+ * Get the tenant identifier of resource.
+ *
+ * @return the tenantId value
+ */
+ public String tenantId() {
+ return this.tenantId;
+ }
+
+ /**
+ * Set the tenant identifier of resource.
+ *
+ * @param tenantId the tenantId value to set
+ * @return the IdentityProperties object itself.
+ */
+ public IdentityProperties withTenantId(String tenantId) {
+ this.tenantId = tenantId;
+ return this;
+ }
+
+ /**
+ * Get the client secret URL of the identity.
+ *
+ * @return the clientSecretUrl value
+ */
+ public String clientSecretUrl() {
+ return this.clientSecretUrl;
+ }
+
+ /**
+ * Set the client secret URL of the identity.
+ *
+ * @param clientSecretUrl the clientSecretUrl value to set
+ * @return the IdentityProperties object itself.
+ */
+ public IdentityProperties withClientSecretUrl(String clientSecretUrl) {
+ this.clientSecretUrl = clientSecretUrl;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/InboundNatRule.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/InboundNatRule.java
new file mode 100644
index 000000000000..ac8ac40ecc14
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/InboundNatRule.java
@@ -0,0 +1,99 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A rule for NAT - exposing a VM's port (backendPort) on the public IP address
+ * using a load balancer.
+ */
+public class InboundNatRule {
+ /**
+ * The transport protocol for the endpoint. Possible values include: 'Tcp',
+ * 'Udp'.
+ */
+ @JsonProperty(value = "transportProtocol")
+ private TransportProtocol transportProtocol;
+
+ /**
+ * The external endpoint port of the inbound connection. Possible values
+ * range between 1 and 65535, inclusive. If unspecified, a value will be
+ * allocated automatically.
+ */
+ @JsonProperty(value = "frontendPort")
+ private Integer frontendPort;
+
+ /**
+ * The port to which the external traffic will be redirected.
+ */
+ @JsonProperty(value = "backendPort")
+ private Integer backendPort;
+
+ /**
+ * Get the transport protocol for the endpoint. Possible values include: 'Tcp', 'Udp'.
+ *
+ * @return the transportProtocol value
+ */
+ public TransportProtocol transportProtocol() {
+ return this.transportProtocol;
+ }
+
+ /**
+ * Set the transport protocol for the endpoint. Possible values include: 'Tcp', 'Udp'.
+ *
+ * @param transportProtocol the transportProtocol value to set
+ * @return the InboundNatRule object itself.
+ */
+ public InboundNatRule withTransportProtocol(TransportProtocol transportProtocol) {
+ this.transportProtocol = transportProtocol;
+ return this;
+ }
+
+ /**
+ * Get the external endpoint port of the inbound connection. Possible values range between 1 and 65535, inclusive. If unspecified, a value will be allocated automatically.
+ *
+ * @return the frontendPort value
+ */
+ public Integer frontendPort() {
+ return this.frontendPort;
+ }
+
+ /**
+ * Set the external endpoint port of the inbound connection. Possible values range between 1 and 65535, inclusive. If unspecified, a value will be allocated automatically.
+ *
+ * @param frontendPort the frontendPort value to set
+ * @return the InboundNatRule object itself.
+ */
+ public InboundNatRule withFrontendPort(Integer frontendPort) {
+ this.frontendPort = frontendPort;
+ return this;
+ }
+
+ /**
+ * Get the port to which the external traffic will be redirected.
+ *
+ * @return the backendPort value
+ */
+ public Integer backendPort() {
+ return this.backendPort;
+ }
+
+ /**
+ * Set the port to which the external traffic will be redirected.
+ *
+ * @param backendPort the backendPort value to set
+ * @return the InboundNatRule object itself.
+ */
+ public InboundNatRule withBackendPort(Integer backendPort) {
+ this.backendPort = backendPort;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/InboundNatRuleFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/InboundNatRuleFragment.java
new file mode 100644
index 000000000000..08481ecedeaf
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/InboundNatRuleFragment.java
@@ -0,0 +1,99 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A rule for NAT - exposing a VM's port (backendPort) on the public IP address
+ * using a load balancer.
+ */
+public class InboundNatRuleFragment {
+ /**
+ * The transport protocol for the endpoint. Possible values include: 'Tcp',
+ * 'Udp'.
+ */
+ @JsonProperty(value = "transportProtocol")
+ private TransportProtocol transportProtocol;
+
+ /**
+ * The external endpoint port of the inbound connection. Possible values
+ * range between 1 and 65535, inclusive. If unspecified, a value will be
+ * allocated automatically.
+ */
+ @JsonProperty(value = "frontendPort")
+ private Integer frontendPort;
+
+ /**
+ * The port to which the external traffic will be redirected.
+ */
+ @JsonProperty(value = "backendPort")
+ private Integer backendPort;
+
+ /**
+ * Get the transport protocol for the endpoint. Possible values include: 'Tcp', 'Udp'.
+ *
+ * @return the transportProtocol value
+ */
+ public TransportProtocol transportProtocol() {
+ return this.transportProtocol;
+ }
+
+ /**
+ * Set the transport protocol for the endpoint. Possible values include: 'Tcp', 'Udp'.
+ *
+ * @param transportProtocol the transportProtocol value to set
+ * @return the InboundNatRuleFragment object itself.
+ */
+ public InboundNatRuleFragment withTransportProtocol(TransportProtocol transportProtocol) {
+ this.transportProtocol = transportProtocol;
+ return this;
+ }
+
+ /**
+ * Get the external endpoint port of the inbound connection. Possible values range between 1 and 65535, inclusive. If unspecified, a value will be allocated automatically.
+ *
+ * @return the frontendPort value
+ */
+ public Integer frontendPort() {
+ return this.frontendPort;
+ }
+
+ /**
+ * Set the external endpoint port of the inbound connection. Possible values range between 1 and 65535, inclusive. If unspecified, a value will be allocated automatically.
+ *
+ * @param frontendPort the frontendPort value to set
+ * @return the InboundNatRuleFragment object itself.
+ */
+ public InboundNatRuleFragment withFrontendPort(Integer frontendPort) {
+ this.frontendPort = frontendPort;
+ return this;
+ }
+
+ /**
+ * Get the port to which the external traffic will be redirected.
+ *
+ * @return the backendPort value
+ */
+ public Integer backendPort() {
+ return this.backendPort;
+ }
+
+ /**
+ * Set the port to which the external traffic will be redirected.
+ *
+ * @param backendPort the backendPort value to set
+ * @return the InboundNatRuleFragment object itself.
+ */
+ public InboundNatRuleFragment withBackendPort(Integer backendPort) {
+ this.backendPort = backendPort;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Lab.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Lab.java
new file mode 100644
index 000000000000..a0ecd7955ddd
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Lab.java
@@ -0,0 +1,219 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.Resource;
+import com.microsoft.azure.arm.resources.models.GroupableResourceCore;
+import com.microsoft.azure.arm.resources.models.HasResourceGroup;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import org.joda.time.DateTime;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.LabInner;
+
+/**
+ * Type representing Lab.
+ */
+public interface Lab extends HasInner, Resource, GroupableResourceCore, HasResourceGroup, Refreshable, Updatable, HasManager {
+ /**
+ * @return the artifactsStorageAccount value.
+ */
+ String artifactsStorageAccount();
+
+ /**
+ * @return the createdDate value.
+ */
+ DateTime createdDate();
+
+ /**
+ * @return the defaultPremiumStorageAccount value.
+ */
+ String defaultPremiumStorageAccount();
+
+ /**
+ * @return the defaultStorageAccount value.
+ */
+ String defaultStorageAccount();
+
+ /**
+ * @return the labStorageType value.
+ */
+ StorageType labStorageType();
+
+ /**
+ * @return the premiumDataDisks value.
+ */
+ PremiumDataDisk premiumDataDisks();
+
+ /**
+ * @return the premiumDataDiskStorageAccount value.
+ */
+ String premiumDataDiskStorageAccount();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the uniqueIdentifier value.
+ */
+ String uniqueIdentifier();
+
+ /**
+ * @return the vaultName value.
+ */
+ String vaultName();
+
+ /**
+ * The entirety of the Lab definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithGroup, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of Lab definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a Lab definition.
+ */
+ interface Blank extends GroupableResourceCore.DefinitionWithRegion {
+ }
+
+ /**
+ * The stage of the Lab definition allowing to specify the resource group.
+ */
+ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup {
+ }
+
+ /**
+ * The stage of the lab definition allowing to specify LabStorageType.
+ */
+ interface WithLabStorageType {
+ /**
+ * Specifies labStorageType.
+ * @param labStorageType Type of storage used by the lab. It can be either Premium or Standard. Default is Premium. Possible values include: 'Standard', 'Premium'
+ * @return the next definition stage
+ */
+ WithCreate withLabStorageType(StorageType labStorageType);
+ }
+
+ /**
+ * The stage of the lab definition allowing to specify PremiumDataDisks.
+ */
+ interface WithPremiumDataDisks {
+ /**
+ * Specifies premiumDataDisks.
+ * @param premiumDataDisks The setting to enable usage of premium data disks.
+ When its value is 'Enabled', creation of standard or premium data disks is allowed.
+ When its value is 'Disabled', only creation of standard data disks is allowed. Possible values include: 'Disabled', 'Enabled'
+ * @return the next definition stage
+ */
+ WithCreate withPremiumDataDisks(PremiumDataDisk premiumDataDisks);
+ }
+
+ /**
+ * The stage of the lab definition allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next definition stage
+ */
+ WithCreate withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the lab definition allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next definition stage
+ */
+ WithCreate withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, Resource.DefinitionWithTags, DefinitionStages.WithLabStorageType, DefinitionStages.WithPremiumDataDisks, DefinitionStages.WithProvisioningState, DefinitionStages.WithUniqueIdentifier {
+ }
+ }
+ /**
+ * The template for a Lab update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithLabStorageType, UpdateStages.WithPremiumDataDisks, UpdateStages.WithProvisioningState, UpdateStages.WithUniqueIdentifier {
+ }
+
+ /**
+ * Grouping of Lab update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the lab update allowing to specify LabStorageType.
+ */
+ interface WithLabStorageType {
+ /**
+ * Specifies labStorageType.
+ * @param labStorageType Type of storage used by the lab. It can be either Premium or Standard. Default is Premium. Possible values include: 'Standard', 'Premium'
+ * @return the next update stage
+ */
+ Update withLabStorageType(StorageType labStorageType);
+ }
+
+ /**
+ * The stage of the lab update allowing to specify PremiumDataDisks.
+ */
+ interface WithPremiumDataDisks {
+ /**
+ * Specifies premiumDataDisks.
+ * @param premiumDataDisks The setting to enable usage of premium data disks.
+ When its value is 'Enabled', creation of standard or premium data disks is allowed.
+ When its value is 'Disabled', only creation of standard data disks is allowed. Possible values include: 'Disabled', 'Enabled'
+ * @return the next update stage
+ */
+ Update withPremiumDataDisks(PremiumDataDisk premiumDataDisks);
+ }
+
+ /**
+ * The stage of the lab update allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next update stage
+ */
+ Update withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the lab update allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next update stage
+ */
+ Update withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabCost.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabCost.java
new file mode 100644
index 000000000000..a40867f3376e
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabCost.java
@@ -0,0 +1,367 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.LabCostInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import java.util.Map;
+import java.util.List;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing LabCost.
+ */
+public interface LabCost extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the createdDate value.
+ */
+ DateTime createdDate();
+
+ /**
+ * @return the currencyCode value.
+ */
+ String currencyCode();
+
+ /**
+ * @return the endDateTime value.
+ */
+ DateTime endDateTime();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the labCostDetails value.
+ */
+ List labCostDetails();
+
+ /**
+ * @return the labCostSummary value.
+ */
+ LabCostSummaryProperties labCostSummary();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the resourceCosts value.
+ */
+ List resourceCosts();
+
+ /**
+ * @return the startDateTime value.
+ */
+ DateTime startDateTime();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the targetCost value.
+ */
+ TargetCostProperties targetCost();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the uniqueIdentifier value.
+ */
+ String uniqueIdentifier();
+
+ /**
+ * The entirety of the LabCost definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of LabCost definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a LabCost definition.
+ */
+ interface Blank extends WithLab {
+ }
+
+ /**
+ * The stage of the labcost definition allowing to specify Lab.
+ */
+ interface WithLab {
+ /**
+ * Specifies resourceGroupName, labName.
+ * @param resourceGroupName The name of the resource group
+ * @param labName The name of the lab
+ * @return the next definition stage
+ */
+ WithCreate withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the labcost definition allowing to specify CreatedDate.
+ */
+ interface WithCreatedDate {
+ /**
+ * Specifies createdDate.
+ * @param createdDate The creation date of the cost
+ * @return the next definition stage
+ */
+ WithCreate withCreatedDate(DateTime createdDate);
+ }
+
+ /**
+ * The stage of the labcost definition allowing to specify CurrencyCode.
+ */
+ interface WithCurrencyCode {
+ /**
+ * Specifies currencyCode.
+ * @param currencyCode The currency code of the cost
+ * @return the next definition stage
+ */
+ WithCreate withCurrencyCode(String currencyCode);
+ }
+
+ /**
+ * The stage of the labcost definition allowing to specify EndDateTime.
+ */
+ interface WithEndDateTime {
+ /**
+ * Specifies endDateTime.
+ * @param endDateTime The end time of the cost data
+ * @return the next definition stage
+ */
+ WithCreate withEndDateTime(DateTime endDateTime);
+ }
+
+ /**
+ * The stage of the labcost definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the labcost definition allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next definition stage
+ */
+ WithCreate withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the labcost definition allowing to specify StartDateTime.
+ */
+ interface WithStartDateTime {
+ /**
+ * Specifies startDateTime.
+ * @param startDateTime The start time of the cost data
+ * @return the next definition stage
+ */
+ WithCreate withStartDateTime(DateTime startDateTime);
+ }
+
+ /**
+ * The stage of the labcost definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the labcost definition allowing to specify TargetCost.
+ */
+ interface WithTargetCost {
+ /**
+ * Specifies targetCost.
+ * @param targetCost The target cost properties
+ * @return the next definition stage
+ */
+ WithCreate withTargetCost(TargetCostProperties targetCost);
+ }
+
+ /**
+ * The stage of the labcost definition allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next definition stage
+ */
+ WithCreate withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithCreatedDate, DefinitionStages.WithCurrencyCode, DefinitionStages.WithEndDateTime, DefinitionStages.WithLocation, DefinitionStages.WithProvisioningState, DefinitionStages.WithStartDateTime, DefinitionStages.WithTags, DefinitionStages.WithTargetCost, DefinitionStages.WithUniqueIdentifier {
+ }
+ }
+ /**
+ * The template for a LabCost update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithCreatedDate, UpdateStages.WithCurrencyCode, UpdateStages.WithEndDateTime, UpdateStages.WithLocation, UpdateStages.WithProvisioningState, UpdateStages.WithStartDateTime, UpdateStages.WithTags, UpdateStages.WithTargetCost, UpdateStages.WithUniqueIdentifier {
+ }
+
+ /**
+ * Grouping of LabCost update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the labcost update allowing to specify CreatedDate.
+ */
+ interface WithCreatedDate {
+ /**
+ * Specifies createdDate.
+ * @param createdDate The creation date of the cost
+ * @return the next update stage
+ */
+ Update withCreatedDate(DateTime createdDate);
+ }
+
+ /**
+ * The stage of the labcost update allowing to specify CurrencyCode.
+ */
+ interface WithCurrencyCode {
+ /**
+ * Specifies currencyCode.
+ * @param currencyCode The currency code of the cost
+ * @return the next update stage
+ */
+ Update withCurrencyCode(String currencyCode);
+ }
+
+ /**
+ * The stage of the labcost update allowing to specify EndDateTime.
+ */
+ interface WithEndDateTime {
+ /**
+ * Specifies endDateTime.
+ * @param endDateTime The end time of the cost data
+ * @return the next update stage
+ */
+ Update withEndDateTime(DateTime endDateTime);
+ }
+
+ /**
+ * The stage of the labcost update allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next update stage
+ */
+ Update withLocation(String location);
+ }
+
+ /**
+ * The stage of the labcost update allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next update stage
+ */
+ Update withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the labcost update allowing to specify StartDateTime.
+ */
+ interface WithStartDateTime {
+ /**
+ * Specifies startDateTime.
+ * @param startDateTime The start time of the cost data
+ * @return the next update stage
+ */
+ Update withStartDateTime(DateTime startDateTime);
+ }
+
+ /**
+ * The stage of the labcost update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the labcost update allowing to specify TargetCost.
+ */
+ interface WithTargetCost {
+ /**
+ * Specifies targetCost.
+ * @param targetCost The target cost properties
+ * @return the next update stage
+ */
+ Update withTargetCost(TargetCostProperties targetCost);
+ }
+
+ /**
+ * The stage of the labcost update allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next update stage
+ */
+ Update withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabCostDetailsProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabCostDetailsProperties.java
new file mode 100644
index 000000000000..fabb064a45a1
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabCostDetailsProperties.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties of a lab cost item.
+ */
+public class LabCostDetailsProperties {
+ /**
+ * The date of the cost item.
+ */
+ @JsonProperty(value = "date")
+ private DateTime dateProperty;
+
+ /**
+ * The cost component of the cost item.
+ */
+ @JsonProperty(value = "cost")
+ private Double cost;
+
+ /**
+ * The type of the cost. Possible values include: 'Unavailable',
+ * 'Reported', 'Projected'.
+ */
+ @JsonProperty(value = "costType")
+ private CostType costType;
+
+ /**
+ * Get the date of the cost item.
+ *
+ * @return the dateProperty value
+ */
+ public DateTime dateProperty() {
+ return this.dateProperty;
+ }
+
+ /**
+ * Set the date of the cost item.
+ *
+ * @param dateProperty the dateProperty value to set
+ * @return the LabCostDetailsProperties object itself.
+ */
+ public LabCostDetailsProperties withDateProperty(DateTime dateProperty) {
+ this.dateProperty = dateProperty;
+ return this;
+ }
+
+ /**
+ * Get the cost component of the cost item.
+ *
+ * @return the cost value
+ */
+ public Double cost() {
+ return this.cost;
+ }
+
+ /**
+ * Set the cost component of the cost item.
+ *
+ * @param cost the cost value to set
+ * @return the LabCostDetailsProperties object itself.
+ */
+ public LabCostDetailsProperties withCost(Double cost) {
+ this.cost = cost;
+ return this;
+ }
+
+ /**
+ * Get the type of the cost. Possible values include: 'Unavailable', 'Reported', 'Projected'.
+ *
+ * @return the costType value
+ */
+ public CostType costType() {
+ return this.costType;
+ }
+
+ /**
+ * Set the type of the cost. Possible values include: 'Unavailable', 'Reported', 'Projected'.
+ *
+ * @param costType the costType value to set
+ * @return the LabCostDetailsProperties object itself.
+ */
+ public LabCostDetailsProperties withCostType(CostType costType) {
+ this.costType = costType;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabCostSummaryProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabCostSummaryProperties.java
new file mode 100644
index 000000000000..d89a69306ae7
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabCostSummaryProperties.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties of the cost summary.
+ */
+public class LabCostSummaryProperties {
+ /**
+ * The cost component of the cost item.
+ */
+ @JsonProperty(value = "estimatedLabCost")
+ private Double estimatedLabCost;
+
+ /**
+ * Get the cost component of the cost item.
+ *
+ * @return the estimatedLabCost value
+ */
+ public Double estimatedLabCost() {
+ return this.estimatedLabCost;
+ }
+
+ /**
+ * Set the cost component of the cost item.
+ *
+ * @param estimatedLabCost the estimatedLabCost value to set
+ * @return the LabCostSummaryProperties object itself.
+ */
+ public LabCostSummaryProperties withEstimatedLabCost(Double estimatedLabCost) {
+ this.estimatedLabCost = estimatedLabCost;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabFragment.java
new file mode 100644
index 000000000000..bc0e7dfa4181
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabFragment.java
@@ -0,0 +1,135 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.rest.SkipParentValidation;
+import com.microsoft.azure.Resource;
+
+/**
+ * A lab.
+ */
+@JsonFlatten
+@SkipParentValidation
+public class LabFragment extends Resource {
+ /**
+ * Type of storage used by the lab. It can be either Premium or Standard.
+ * Default is Premium. Possible values include: 'Standard', 'Premium'.
+ */
+ @JsonProperty(value = "properties.labStorageType")
+ private StorageType labStorageType;
+
+ /**
+ * The setting to enable usage of premium data disks.
+ * When its value is 'Enabled', creation of standard or premium data disks
+ * is allowed.
+ * When its value is 'Disabled', only creation of standard data disks is
+ * allowed. Possible values include: 'Disabled', 'Enabled'.
+ */
+ @JsonProperty(value = "properties.premiumDataDisks")
+ private PremiumDataDisk premiumDataDisks;
+
+ /**
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState")
+ private String provisioningState;
+
+ /**
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier")
+ private String uniqueIdentifier;
+
+ /**
+ * Get type of storage used by the lab. It can be either Premium or Standard. Default is Premium. Possible values include: 'Standard', 'Premium'.
+ *
+ * @return the labStorageType value
+ */
+ public StorageType labStorageType() {
+ return this.labStorageType;
+ }
+
+ /**
+ * Set type of storage used by the lab. It can be either Premium or Standard. Default is Premium. Possible values include: 'Standard', 'Premium'.
+ *
+ * @param labStorageType the labStorageType value to set
+ * @return the LabFragment object itself.
+ */
+ public LabFragment withLabStorageType(StorageType labStorageType) {
+ this.labStorageType = labStorageType;
+ return this;
+ }
+
+ /**
+ * Get the setting to enable usage of premium data disks.
+ When its value is 'Enabled', creation of standard or premium data disks is allowed.
+ When its value is 'Disabled', only creation of standard data disks is allowed. Possible values include: 'Disabled', 'Enabled'.
+ *
+ * @return the premiumDataDisks value
+ */
+ public PremiumDataDisk premiumDataDisks() {
+ return this.premiumDataDisks;
+ }
+
+ /**
+ * Set the setting to enable usage of premium data disks.
+ When its value is 'Enabled', creation of standard or premium data disks is allowed.
+ When its value is 'Disabled', only creation of standard data disks is allowed. Possible values include: 'Disabled', 'Enabled'.
+ *
+ * @param premiumDataDisks the premiumDataDisks value to set
+ * @return the LabFragment object itself.
+ */
+ public LabFragment withPremiumDataDisks(PremiumDataDisk premiumDataDisks) {
+ this.premiumDataDisks = premiumDataDisks;
+ return this;
+ }
+
+ /**
+ * Get the provisioning status of the resource.
+ *
+ * @return the provisioningState value
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Set the provisioning status of the resource.
+ *
+ * @param provisioningState the provisioningState value to set
+ * @return the LabFragment object itself.
+ */
+ public LabFragment withProvisioningState(String provisioningState) {
+ this.provisioningState = provisioningState;
+ return this;
+ }
+
+ /**
+ * Get the unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /**
+ * Set the unique immutable identifier of a resource (Guid).
+ *
+ * @param uniqueIdentifier the uniqueIdentifier value to set
+ * @return the LabFragment object itself.
+ */
+ public LabFragment withUniqueIdentifier(String uniqueIdentifier) {
+ this.uniqueIdentifier = uniqueIdentifier;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabResourceCostProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabResourceCostProperties.java
new file mode 100644
index 000000000000..276ce5bbf143
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabResourceCostProperties.java
@@ -0,0 +1,251 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties of a resource cost item.
+ */
+public class LabResourceCostProperties {
+ /**
+ * The name of the resource.
+ */
+ @JsonProperty(value = "resourcename")
+ private String resourcename;
+
+ /**
+ * The unique identifier of the resource.
+ */
+ @JsonProperty(value = "resourceUId")
+ private String resourceUId;
+
+ /**
+ * The cost component of the resource cost item.
+ */
+ @JsonProperty(value = "resourceCost")
+ private Double resourceCost;
+
+ /**
+ * The logical resource type (ex. virtualmachine, storageaccount).
+ */
+ @JsonProperty(value = "resourceType")
+ private String resourceType;
+
+ /**
+ * The owner of the resource (ex. janedoe@microsoft.com).
+ */
+ @JsonProperty(value = "resourceOwner")
+ private String resourceOwner;
+
+ /**
+ * The category of the resource (ex. Premium_LRS, Standard_DS1).
+ */
+ @JsonProperty(value = "resourcePricingTier")
+ private String resourcePricingTier;
+
+ /**
+ * The status of the resource (ex. Active).
+ */
+ @JsonProperty(value = "resourceStatus")
+ private String resourceStatus;
+
+ /**
+ * The ID of the resource.
+ */
+ @JsonProperty(value = "resourceId")
+ private String resourceId;
+
+ /**
+ * The ID of the external resource.
+ */
+ @JsonProperty(value = "externalResourceId")
+ private String externalResourceId;
+
+ /**
+ * Get the name of the resource.
+ *
+ * @return the resourcename value
+ */
+ public String resourcename() {
+ return this.resourcename;
+ }
+
+ /**
+ * Set the name of the resource.
+ *
+ * @param resourcename the resourcename value to set
+ * @return the LabResourceCostProperties object itself.
+ */
+ public LabResourceCostProperties withResourcename(String resourcename) {
+ this.resourcename = resourcename;
+ return this;
+ }
+
+ /**
+ * Get the unique identifier of the resource.
+ *
+ * @return the resourceUId value
+ */
+ public String resourceUId() {
+ return this.resourceUId;
+ }
+
+ /**
+ * Set the unique identifier of the resource.
+ *
+ * @param resourceUId the resourceUId value to set
+ * @return the LabResourceCostProperties object itself.
+ */
+ public LabResourceCostProperties withResourceUId(String resourceUId) {
+ this.resourceUId = resourceUId;
+ return this;
+ }
+
+ /**
+ * Get the cost component of the resource cost item.
+ *
+ * @return the resourceCost value
+ */
+ public Double resourceCost() {
+ return this.resourceCost;
+ }
+
+ /**
+ * Set the cost component of the resource cost item.
+ *
+ * @param resourceCost the resourceCost value to set
+ * @return the LabResourceCostProperties object itself.
+ */
+ public LabResourceCostProperties withResourceCost(Double resourceCost) {
+ this.resourceCost = resourceCost;
+ return this;
+ }
+
+ /**
+ * Get the logical resource type (ex. virtualmachine, storageaccount).
+ *
+ * @return the resourceType value
+ */
+ public String resourceType() {
+ return this.resourceType;
+ }
+
+ /**
+ * Set the logical resource type (ex. virtualmachine, storageaccount).
+ *
+ * @param resourceType the resourceType value to set
+ * @return the LabResourceCostProperties object itself.
+ */
+ public LabResourceCostProperties withResourceType(String resourceType) {
+ this.resourceType = resourceType;
+ return this;
+ }
+
+ /**
+ * Get the owner of the resource (ex. janedoe@microsoft.com).
+ *
+ * @return the resourceOwner value
+ */
+ public String resourceOwner() {
+ return this.resourceOwner;
+ }
+
+ /**
+ * Set the owner of the resource (ex. janedoe@microsoft.com).
+ *
+ * @param resourceOwner the resourceOwner value to set
+ * @return the LabResourceCostProperties object itself.
+ */
+ public LabResourceCostProperties withResourceOwner(String resourceOwner) {
+ this.resourceOwner = resourceOwner;
+ return this;
+ }
+
+ /**
+ * Get the category of the resource (ex. Premium_LRS, Standard_DS1).
+ *
+ * @return the resourcePricingTier value
+ */
+ public String resourcePricingTier() {
+ return this.resourcePricingTier;
+ }
+
+ /**
+ * Set the category of the resource (ex. Premium_LRS, Standard_DS1).
+ *
+ * @param resourcePricingTier the resourcePricingTier value to set
+ * @return the LabResourceCostProperties object itself.
+ */
+ public LabResourceCostProperties withResourcePricingTier(String resourcePricingTier) {
+ this.resourcePricingTier = resourcePricingTier;
+ return this;
+ }
+
+ /**
+ * Get the status of the resource (ex. Active).
+ *
+ * @return the resourceStatus value
+ */
+ public String resourceStatus() {
+ return this.resourceStatus;
+ }
+
+ /**
+ * Set the status of the resource (ex. Active).
+ *
+ * @param resourceStatus the resourceStatus value to set
+ * @return the LabResourceCostProperties object itself.
+ */
+ public LabResourceCostProperties withResourceStatus(String resourceStatus) {
+ this.resourceStatus = resourceStatus;
+ return this;
+ }
+
+ /**
+ * Get the ID of the resource.
+ *
+ * @return the resourceId value
+ */
+ public String resourceId() {
+ return this.resourceId;
+ }
+
+ /**
+ * Set the ID of the resource.
+ *
+ * @param resourceId the resourceId value to set
+ * @return the LabResourceCostProperties object itself.
+ */
+ public LabResourceCostProperties withResourceId(String resourceId) {
+ this.resourceId = resourceId;
+ return this;
+ }
+
+ /**
+ * Get the ID of the external resource.
+ *
+ * @return the externalResourceId value
+ */
+ public String externalResourceId() {
+ return this.externalResourceId;
+ }
+
+ /**
+ * Set the ID of the external resource.
+ *
+ * @param externalResourceId the externalResourceId value to set
+ * @return the LabResourceCostProperties object itself.
+ */
+ public LabResourceCostProperties withExternalResourceId(String externalResourceId) {
+ this.externalResourceId = externalResourceId;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabSchedule.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabSchedule.java
new file mode 100644
index 000000000000..fe6e3976e2c9
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabSchedule.java
@@ -0,0 +1,443 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ScheduleInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing LabSchedule.
+ */
+public interface LabSchedule extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the createdDate value.
+ */
+ DateTime createdDate();
+
+ /**
+ * @return the dailyRecurrence value.
+ */
+ DayDetails dailyRecurrence();
+
+ /**
+ * @return the hourlyRecurrence value.
+ */
+ HourDetails hourlyRecurrence();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the notificationSettings value.
+ */
+ NotificationSettings notificationSettings();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the status value.
+ */
+ EnableStatus status();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the targetResourceId value.
+ */
+ String targetResourceId();
+
+ /**
+ * @return the taskType value.
+ */
+ String taskType();
+
+ /**
+ * @return the timeZoneId value.
+ */
+ String timeZoneId();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the uniqueIdentifier value.
+ */
+ String uniqueIdentifier();
+
+ /**
+ * @return the weeklyRecurrence value.
+ */
+ WeekDetails weeklyRecurrence();
+
+ /**
+ * The entirety of the LabSchedule definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of LabSchedule definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a LabSchedule definition.
+ */
+ interface Blank extends WithLab {
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify Lab.
+ */
+ interface WithLab {
+ /**
+ * Specifies resourceGroupName, labName.
+ * @param resourceGroupName The name of the resource group
+ * @param labName The name of the lab
+ * @return the next definition stage
+ */
+ WithCreate withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify DailyRecurrence.
+ */
+ interface WithDailyRecurrence {
+ /**
+ * Specifies dailyRecurrence.
+ * @param dailyRecurrence If the schedule will occur once each day of the week, specify the daily recurrence
+ * @return the next definition stage
+ */
+ WithCreate withDailyRecurrence(DayDetails dailyRecurrence);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify HourlyRecurrence.
+ */
+ interface WithHourlyRecurrence {
+ /**
+ * Specifies hourlyRecurrence.
+ * @param hourlyRecurrence If the schedule will occur multiple times a day, specify the hourly recurrence
+ * @return the next definition stage
+ */
+ WithCreate withHourlyRecurrence(HourDetails hourlyRecurrence);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify NotificationSettings.
+ */
+ interface WithNotificationSettings {
+ /**
+ * Specifies notificationSettings.
+ * @param notificationSettings Notification settings
+ * @return the next definition stage
+ */
+ WithCreate withNotificationSettings(NotificationSettings notificationSettings);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next definition stage
+ */
+ WithCreate withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify Status.
+ */
+ interface WithStatus {
+ /**
+ * Specifies status.
+ * @param status The status of the schedule (i.e. Enabled, Disabled). Possible values include: 'Enabled', 'Disabled'
+ * @return the next definition stage
+ */
+ WithCreate withStatus(EnableStatus status);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify TargetResourceId.
+ */
+ interface WithTargetResourceId {
+ /**
+ * Specifies targetResourceId.
+ * @param targetResourceId The resource ID to which the schedule belongs
+ * @return the next definition stage
+ */
+ WithCreate withTargetResourceId(String targetResourceId);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify TaskType.
+ */
+ interface WithTaskType {
+ /**
+ * Specifies taskType.
+ * @param taskType The task type of the schedule (e.g. LabVmsShutdownTask, LabVmAutoStart)
+ * @return the next definition stage
+ */
+ WithCreate withTaskType(String taskType);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify TimeZoneId.
+ */
+ interface WithTimeZoneId {
+ /**
+ * Specifies timeZoneId.
+ * @param timeZoneId The time zone ID (e.g. Pacific Standard time)
+ * @return the next definition stage
+ */
+ WithCreate withTimeZoneId(String timeZoneId);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next definition stage
+ */
+ WithCreate withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the labschedule definition allowing to specify WeeklyRecurrence.
+ */
+ interface WithWeeklyRecurrence {
+ /**
+ * Specifies weeklyRecurrence.
+ * @param weeklyRecurrence If the schedule will occur only some days of the week, specify the weekly recurrence
+ * @return the next definition stage
+ */
+ WithCreate withWeeklyRecurrence(WeekDetails weeklyRecurrence);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithDailyRecurrence, DefinitionStages.WithHourlyRecurrence, DefinitionStages.WithLocation, DefinitionStages.WithNotificationSettings, DefinitionStages.WithProvisioningState, DefinitionStages.WithStatus, DefinitionStages.WithTags, DefinitionStages.WithTargetResourceId, DefinitionStages.WithTaskType, DefinitionStages.WithTimeZoneId, DefinitionStages.WithUniqueIdentifier, DefinitionStages.WithWeeklyRecurrence {
+ }
+ }
+ /**
+ * The template for a LabSchedule update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithDailyRecurrence, UpdateStages.WithHourlyRecurrence, UpdateStages.WithLocation, UpdateStages.WithNotificationSettings, UpdateStages.WithProvisioningState, UpdateStages.WithStatus, UpdateStages.WithTags, UpdateStages.WithTargetResourceId, UpdateStages.WithTaskType, UpdateStages.WithTimeZoneId, UpdateStages.WithUniqueIdentifier, UpdateStages.WithWeeklyRecurrence {
+ }
+
+ /**
+ * Grouping of LabSchedule update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the labschedule update allowing to specify DailyRecurrence.
+ */
+ interface WithDailyRecurrence {
+ /**
+ * Specifies dailyRecurrence.
+ * @param dailyRecurrence If the schedule will occur once each day of the week, specify the daily recurrence
+ * @return the next update stage
+ */
+ Update withDailyRecurrence(DayDetailsFragment dailyRecurrence);
+ }
+
+ /**
+ * The stage of the labschedule update allowing to specify HourlyRecurrence.
+ */
+ interface WithHourlyRecurrence {
+ /**
+ * Specifies hourlyRecurrence.
+ * @param hourlyRecurrence If the schedule will occur multiple times a day, specify the hourly recurrence
+ * @return the next update stage
+ */
+ Update withHourlyRecurrence(HourDetailsFragment hourlyRecurrence);
+ }
+
+ /**
+ * The stage of the labschedule update allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next update stage
+ */
+ Update withLocation(String location);
+ }
+
+ /**
+ * The stage of the labschedule update allowing to specify NotificationSettings.
+ */
+ interface WithNotificationSettings {
+ /**
+ * Specifies notificationSettings.
+ * @param notificationSettings Notification settings
+ * @return the next update stage
+ */
+ Update withNotificationSettings(NotificationSettingsFragment notificationSettings);
+ }
+
+ /**
+ * The stage of the labschedule update allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next update stage
+ */
+ Update withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the labschedule update allowing to specify Status.
+ */
+ interface WithStatus {
+ /**
+ * Specifies status.
+ * @param status The status of the schedule (i.e. Enabled, Disabled). Possible values include: 'Enabled', 'Disabled'
+ * @return the next update stage
+ */
+ Update withStatus(EnableStatus status);
+ }
+
+ /**
+ * The stage of the labschedule update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the labschedule update allowing to specify TargetResourceId.
+ */
+ interface WithTargetResourceId {
+ /**
+ * Specifies targetResourceId.
+ * @param targetResourceId The resource ID to which the schedule belongs
+ * @return the next update stage
+ */
+ Update withTargetResourceId(String targetResourceId);
+ }
+
+ /**
+ * The stage of the labschedule update allowing to specify TaskType.
+ */
+ interface WithTaskType {
+ /**
+ * Specifies taskType.
+ * @param taskType The task type of the schedule (e.g. LabVmsShutdownTask, LabVmAutoStart)
+ * @return the next update stage
+ */
+ Update withTaskType(String taskType);
+ }
+
+ /**
+ * The stage of the labschedule update allowing to specify TimeZoneId.
+ */
+ interface WithTimeZoneId {
+ /**
+ * Specifies timeZoneId.
+ * @param timeZoneId The time zone ID (e.g. Pacific Standard time)
+ * @return the next update stage
+ */
+ Update withTimeZoneId(String timeZoneId);
+ }
+
+ /**
+ * The stage of the labschedule update allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next update stage
+ */
+ Update withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the labschedule update allowing to specify WeeklyRecurrence.
+ */
+ interface WithWeeklyRecurrence {
+ /**
+ * Specifies weeklyRecurrence.
+ * @param weeklyRecurrence If the schedule will occur only some days of the week, specify the weekly recurrence
+ * @return the next update stage
+ */
+ Update withWeeklyRecurrence(WeekDetailsFragment weeklyRecurrence);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVhd.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVhd.java
new file mode 100644
index 000000000000..ff367e0c34c9
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVhd.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.LabVhdInner;
+
+/**
+ * Type representing LabVhd.
+ */
+public interface LabVhd extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVirtualMachine.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVirtualMachine.java
new file mode 100644
index 000000000000..4d252d5354c5
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVirtualMachine.java
@@ -0,0 +1,1025 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.LabVirtualMachineInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import java.util.Map;
+import org.joda.time.DateTime;
+import java.util.List;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ApplicableScheduleInner;
+
+/**
+ * Type representing LabVirtualMachine.
+ */
+public interface LabVirtualMachine extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the allowClaim value.
+ */
+ Boolean allowClaim();
+
+ /**
+ * @return the applicableSchedule value.
+ */
+ ApplicableSchedule applicableSchedule();
+
+ /**
+ * @return the artifactDeploymentStatus value.
+ */
+ ArtifactDeploymentStatusProperties artifactDeploymentStatus();
+
+ /**
+ * @return the artifacts value.
+ */
+ List artifacts();
+
+ /**
+ * @return the computeId value.
+ */
+ String computeId();
+
+ /**
+ * @return the computeVm value.
+ */
+ ComputeVmProperties computeVm();
+
+ /**
+ * @return the createdByUser value.
+ */
+ String createdByUser();
+
+ /**
+ * @return the createdByUserId value.
+ */
+ String createdByUserId();
+
+ /**
+ * @return the createdDate value.
+ */
+ DateTime createdDate();
+
+ /**
+ * @return the customImageId value.
+ */
+ String customImageId();
+
+ /**
+ * @return the disallowPublicIpAddress value.
+ */
+ Boolean disallowPublicIpAddress();
+
+ /**
+ * @return the environmentId value.
+ */
+ String environmentId();
+
+ /**
+ * @return the expirationDate value.
+ */
+ DateTime expirationDate();
+
+ /**
+ * @return the fqdn value.
+ */
+ String fqdn();
+
+ /**
+ * @return the galleryImageReference value.
+ */
+ GalleryImageReference galleryImageReference();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the isAuthenticationWithSshKey value.
+ */
+ Boolean isAuthenticationWithSshKey();
+
+ /**
+ * @return the labSubnetName value.
+ */
+ String labSubnetName();
+
+ /**
+ * @return the labVirtualNetworkId value.
+ */
+ String labVirtualNetworkId();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the networkInterface value.
+ */
+ NetworkInterfaceProperties networkInterface();
+
+ /**
+ * @return the notes value.
+ */
+ String notes();
+
+ /**
+ * @return the osType value.
+ */
+ String osType();
+
+ /**
+ * @return the ownerObjectId value.
+ */
+ String ownerObjectId();
+
+ /**
+ * @return the ownerUserPrincipalName value.
+ */
+ String ownerUserPrincipalName();
+
+ /**
+ * @return the password value.
+ */
+ String password();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the size value.
+ */
+ String size();
+
+ /**
+ * @return the sshKey value.
+ */
+ String sshKey();
+
+ /**
+ * @return the storageType value.
+ */
+ String storageType();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the uniqueIdentifier value.
+ */
+ String uniqueIdentifier();
+
+ /**
+ * @return the userName value.
+ */
+ String userName();
+
+ /**
+ * @return the virtualMachineCreationSource value.
+ */
+ VirtualMachineCreationSource virtualMachineCreationSource();
+
+ /**
+ * The entirety of the LabVirtualMachine definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of LabVirtualMachine definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a LabVirtualMachine definition.
+ */
+ interface Blank extends WithLab {
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify Lab.
+ */
+ interface WithLab {
+ /**
+ * Specifies resourceGroupName, labName.
+ * @param resourceGroupName The name of the resource group
+ * @param labName The name of the lab
+ * @return the next definition stage
+ */
+ WithCreate withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify AllowClaim.
+ */
+ interface WithAllowClaim {
+ /**
+ * Specifies allowClaim.
+ * @param allowClaim Indicates whether another user can take ownership of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withAllowClaim(Boolean allowClaim);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify ApplicableSchedule.
+ */
+ interface WithApplicableSchedule {
+ /**
+ * Specifies applicableSchedule.
+ * @param applicableSchedule The applicable schedule for the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withApplicableSchedule(ApplicableScheduleInner applicableSchedule);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify ArtifactDeploymentStatus.
+ */
+ interface WithArtifactDeploymentStatus {
+ /**
+ * Specifies artifactDeploymentStatus.
+ * @param artifactDeploymentStatus The artifact deployment status for the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withArtifactDeploymentStatus(ArtifactDeploymentStatusProperties artifactDeploymentStatus);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify Artifacts.
+ */
+ interface WithArtifacts {
+ /**
+ * Specifies artifacts.
+ * @param artifacts The artifacts to be installed on the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withArtifacts(List artifacts);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify ComputeVm.
+ */
+ interface WithComputeVm {
+ /**
+ * Specifies computeVm.
+ * @param computeVm The compute virtual machine properties
+ * @return the next definition stage
+ */
+ WithCreate withComputeVm(ComputeVmProperties computeVm);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify CreatedByUser.
+ */
+ interface WithCreatedByUser {
+ /**
+ * Specifies createdByUser.
+ * @param createdByUser The email address of creator of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withCreatedByUser(String createdByUser);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify CreatedByUserId.
+ */
+ interface WithCreatedByUserId {
+ /**
+ * Specifies createdByUserId.
+ * @param createdByUserId The object identifier of the creator of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withCreatedByUserId(String createdByUserId);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify CreatedDate.
+ */
+ interface WithCreatedDate {
+ /**
+ * Specifies createdDate.
+ * @param createdDate The creation date of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withCreatedDate(DateTime createdDate);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify CustomImageId.
+ */
+ interface WithCustomImageId {
+ /**
+ * Specifies customImageId.
+ * @param customImageId The custom image identifier of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withCustomImageId(String customImageId);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify DisallowPublicIpAddress.
+ */
+ interface WithDisallowPublicIpAddress {
+ /**
+ * Specifies disallowPublicIpAddress.
+ * @param disallowPublicIpAddress Indicates whether the virtual machine is to be created without a public IP address
+ * @return the next definition stage
+ */
+ WithCreate withDisallowPublicIpAddress(Boolean disallowPublicIpAddress);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify EnvironmentId.
+ */
+ interface WithEnvironmentId {
+ /**
+ * Specifies environmentId.
+ * @param environmentId The resource ID of the environment that contains this virtual machine, if any
+ * @return the next definition stage
+ */
+ WithCreate withEnvironmentId(String environmentId);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify ExpirationDate.
+ */
+ interface WithExpirationDate {
+ /**
+ * Specifies expirationDate.
+ * @param expirationDate The expiration date for VM
+ * @return the next definition stage
+ */
+ WithCreate withExpirationDate(DateTime expirationDate);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify Fqdn.
+ */
+ interface WithFqdn {
+ /**
+ * Specifies fqdn.
+ * @param fqdn The fully-qualified domain name of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withFqdn(String fqdn);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify GalleryImageReference.
+ */
+ interface WithGalleryImageReference {
+ /**
+ * Specifies galleryImageReference.
+ * @param galleryImageReference The Microsoft Azure Marketplace image reference of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withGalleryImageReference(GalleryImageReference galleryImageReference);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify IsAuthenticationWithSshKey.
+ */
+ interface WithIsAuthenticationWithSshKey {
+ /**
+ * Specifies isAuthenticationWithSshKey.
+ * @param isAuthenticationWithSshKey Indicates whether this virtual machine uses an SSH key for authentication
+ * @return the next definition stage
+ */
+ WithCreate withIsAuthenticationWithSshKey(Boolean isAuthenticationWithSshKey);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify LabSubnetName.
+ */
+ interface WithLabSubnetName {
+ /**
+ * Specifies labSubnetName.
+ * @param labSubnetName The lab subnet name of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withLabSubnetName(String labSubnetName);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify LabVirtualNetworkId.
+ */
+ interface WithLabVirtualNetworkId {
+ /**
+ * Specifies labVirtualNetworkId.
+ * @param labVirtualNetworkId The lab virtual network identifier of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withLabVirtualNetworkId(String labVirtualNetworkId);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify NetworkInterface.
+ */
+ interface WithNetworkInterface {
+ /**
+ * Specifies networkInterface.
+ * @param networkInterface The network interface properties
+ * @return the next definition stage
+ */
+ WithCreate withNetworkInterface(NetworkInterfaceProperties networkInterface);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify Notes.
+ */
+ interface WithNotes {
+ /**
+ * Specifies notes.
+ * @param notes The notes of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withNotes(String notes);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify OsType.
+ */
+ interface WithOsType {
+ /**
+ * Specifies osType.
+ * @param osType The OS type of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withOsType(String osType);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify OwnerObjectId.
+ */
+ interface WithOwnerObjectId {
+ /**
+ * Specifies ownerObjectId.
+ * @param ownerObjectId The object identifier of the owner of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withOwnerObjectId(String ownerObjectId);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify OwnerUserPrincipalName.
+ */
+ interface WithOwnerUserPrincipalName {
+ /**
+ * Specifies ownerUserPrincipalName.
+ * @param ownerUserPrincipalName The user principal name of the virtual machine owner
+ * @return the next definition stage
+ */
+ WithCreate withOwnerUserPrincipalName(String ownerUserPrincipalName);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify Password.
+ */
+ interface WithPassword {
+ /**
+ * Specifies password.
+ * @param password The password of the virtual machine administrator
+ * @return the next definition stage
+ */
+ WithCreate withPassword(String password);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next definition stage
+ */
+ WithCreate withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify Size.
+ */
+ interface WithSize {
+ /**
+ * Specifies size.
+ * @param size The size of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withSize(String size);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify SshKey.
+ */
+ interface WithSshKey {
+ /**
+ * Specifies sshKey.
+ * @param sshKey The SSH key of the virtual machine administrator
+ * @return the next definition stage
+ */
+ WithCreate withSshKey(String sshKey);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify StorageType.
+ */
+ interface WithStorageType {
+ /**
+ * Specifies storageType.
+ * @param storageType Storage type to use for virtual machine (i.e. Standard, Premium)
+ * @return the next definition stage
+ */
+ WithCreate withStorageType(String storageType);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next definition stage
+ */
+ WithCreate withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify UserName.
+ */
+ interface WithUserName {
+ /**
+ * Specifies userName.
+ * @param userName The user name of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withUserName(String userName);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify VirtualMachineCreationSource.
+ */
+ interface WithVirtualMachineCreationSource {
+ /**
+ * Specifies virtualMachineCreationSource.
+ * @param virtualMachineCreationSource Tells source of creation of lab virtual machine. Output property only. Possible values include: 'FromCustomImage', 'FromGalleryImage'
+ * @return the next definition stage
+ */
+ WithCreate withVirtualMachineCreationSource(VirtualMachineCreationSource virtualMachineCreationSource);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithAllowClaim, DefinitionStages.WithApplicableSchedule, DefinitionStages.WithArtifactDeploymentStatus, DefinitionStages.WithArtifacts, DefinitionStages.WithComputeVm, DefinitionStages.WithCreatedByUser, DefinitionStages.WithCreatedByUserId, DefinitionStages.WithCreatedDate, DefinitionStages.WithCustomImageId, DefinitionStages.WithDisallowPublicIpAddress, DefinitionStages.WithEnvironmentId, DefinitionStages.WithExpirationDate, DefinitionStages.WithFqdn, DefinitionStages.WithGalleryImageReference, DefinitionStages.WithIsAuthenticationWithSshKey, DefinitionStages.WithLabSubnetName, DefinitionStages.WithLabVirtualNetworkId, DefinitionStages.WithLocation, DefinitionStages.WithNetworkInterface, DefinitionStages.WithNotes, DefinitionStages.WithOsType, DefinitionStages.WithOwnerObjectId, DefinitionStages.WithOwnerUserPrincipalName, DefinitionStages.WithPassword, DefinitionStages.WithProvisioningState, DefinitionStages.WithSize, DefinitionStages.WithSshKey, DefinitionStages.WithStorageType, DefinitionStages.WithTags, DefinitionStages.WithUniqueIdentifier, DefinitionStages.WithUserName, DefinitionStages.WithVirtualMachineCreationSource {
+ }
+ }
+ /**
+ * The template for a LabVirtualMachine update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithAllowClaim, UpdateStages.WithApplicableSchedule, UpdateStages.WithArtifactDeploymentStatus, UpdateStages.WithArtifacts, UpdateStages.WithComputeVm, UpdateStages.WithCreatedByUser, UpdateStages.WithCreatedByUserId, UpdateStages.WithCreatedDate, UpdateStages.WithCustomImageId, UpdateStages.WithDisallowPublicIpAddress, UpdateStages.WithEnvironmentId, UpdateStages.WithExpirationDate, UpdateStages.WithFqdn, UpdateStages.WithGalleryImageReference, UpdateStages.WithIsAuthenticationWithSshKey, UpdateStages.WithLabSubnetName, UpdateStages.WithLabVirtualNetworkId, UpdateStages.WithLocation, UpdateStages.WithNetworkInterface, UpdateStages.WithNotes, UpdateStages.WithOsType, UpdateStages.WithOwnerObjectId, UpdateStages.WithOwnerUserPrincipalName, UpdateStages.WithPassword, UpdateStages.WithProvisioningState, UpdateStages.WithSize, UpdateStages.WithSshKey, UpdateStages.WithStorageType, UpdateStages.WithTags, UpdateStages.WithUniqueIdentifier, UpdateStages.WithUserName, UpdateStages.WithVirtualMachineCreationSource {
+ }
+
+ /**
+ * Grouping of LabVirtualMachine update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the labvirtualmachine update allowing to specify AllowClaim.
+ */
+ interface WithAllowClaim {
+ /**
+ * Specifies allowClaim.
+ * @param allowClaim Indicates whether another user can take ownership of the virtual machine
+ * @return the next update stage
+ */
+ Update withAllowClaim(Boolean allowClaim);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify ApplicableSchedule.
+ */
+ interface WithApplicableSchedule {
+ /**
+ * Specifies applicableSchedule.
+ * @param applicableSchedule The applicable schedule for the virtual machine
+ * @return the next update stage
+ */
+ Update withApplicableSchedule(ApplicableScheduleFragment applicableSchedule);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify ArtifactDeploymentStatus.
+ */
+ interface WithArtifactDeploymentStatus {
+ /**
+ * Specifies artifactDeploymentStatus.
+ * @param artifactDeploymentStatus The artifact deployment status for the virtual machine
+ * @return the next update stage
+ */
+ Update withArtifactDeploymentStatus(ArtifactDeploymentStatusPropertiesFragment artifactDeploymentStatus);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify Artifacts.
+ */
+ interface WithArtifacts {
+ /**
+ * Specifies artifacts.
+ * @param artifacts The artifacts to be installed on the virtual machine
+ * @return the next update stage
+ */
+ Update withArtifacts(List artifacts);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify ComputeVm.
+ */
+ interface WithComputeVm {
+ /**
+ * Specifies computeVm.
+ * @param computeVm The compute virtual machine properties
+ * @return the next update stage
+ */
+ Update withComputeVm(ComputeVmPropertiesFragment computeVm);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify CreatedByUser.
+ */
+ interface WithCreatedByUser {
+ /**
+ * Specifies createdByUser.
+ * @param createdByUser The email address of creator of the virtual machine
+ * @return the next update stage
+ */
+ Update withCreatedByUser(String createdByUser);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify CreatedByUserId.
+ */
+ interface WithCreatedByUserId {
+ /**
+ * Specifies createdByUserId.
+ * @param createdByUserId The object identifier of the creator of the virtual machine
+ * @return the next update stage
+ */
+ Update withCreatedByUserId(String createdByUserId);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify CreatedDate.
+ */
+ interface WithCreatedDate {
+ /**
+ * Specifies createdDate.
+ * @param createdDate The creation date of the virtual machine
+ * @return the next update stage
+ */
+ Update withCreatedDate(DateTime createdDate);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify CustomImageId.
+ */
+ interface WithCustomImageId {
+ /**
+ * Specifies customImageId.
+ * @param customImageId The custom image identifier of the virtual machine
+ * @return the next update stage
+ */
+ Update withCustomImageId(String customImageId);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify DisallowPublicIpAddress.
+ */
+ interface WithDisallowPublicIpAddress {
+ /**
+ * Specifies disallowPublicIpAddress.
+ * @param disallowPublicIpAddress Indicates whether the virtual machine is to be created without a public IP address
+ * @return the next update stage
+ */
+ Update withDisallowPublicIpAddress(Boolean disallowPublicIpAddress);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify EnvironmentId.
+ */
+ interface WithEnvironmentId {
+ /**
+ * Specifies environmentId.
+ * @param environmentId The resource ID of the environment that contains this virtual machine, if any
+ * @return the next update stage
+ */
+ Update withEnvironmentId(String environmentId);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify ExpirationDate.
+ */
+ interface WithExpirationDate {
+ /**
+ * Specifies expirationDate.
+ * @param expirationDate The expiration date for VM
+ * @return the next update stage
+ */
+ Update withExpirationDate(DateTime expirationDate);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify Fqdn.
+ */
+ interface WithFqdn {
+ /**
+ * Specifies fqdn.
+ * @param fqdn The fully-qualified domain name of the virtual machine
+ * @return the next update stage
+ */
+ Update withFqdn(String fqdn);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify GalleryImageReference.
+ */
+ interface WithGalleryImageReference {
+ /**
+ * Specifies galleryImageReference.
+ * @param galleryImageReference The Microsoft Azure Marketplace image reference of the virtual machine
+ * @return the next update stage
+ */
+ Update withGalleryImageReference(GalleryImageReferenceFragment galleryImageReference);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify IsAuthenticationWithSshKey.
+ */
+ interface WithIsAuthenticationWithSshKey {
+ /**
+ * Specifies isAuthenticationWithSshKey.
+ * @param isAuthenticationWithSshKey Indicates whether this virtual machine uses an SSH key for authentication
+ * @return the next update stage
+ */
+ Update withIsAuthenticationWithSshKey(Boolean isAuthenticationWithSshKey);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify LabSubnetName.
+ */
+ interface WithLabSubnetName {
+ /**
+ * Specifies labSubnetName.
+ * @param labSubnetName The lab subnet name of the virtual machine
+ * @return the next update stage
+ */
+ Update withLabSubnetName(String labSubnetName);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify LabVirtualNetworkId.
+ */
+ interface WithLabVirtualNetworkId {
+ /**
+ * Specifies labVirtualNetworkId.
+ * @param labVirtualNetworkId The lab virtual network identifier of the virtual machine
+ * @return the next update stage
+ */
+ Update withLabVirtualNetworkId(String labVirtualNetworkId);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next update stage
+ */
+ Update withLocation(String location);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify NetworkInterface.
+ */
+ interface WithNetworkInterface {
+ /**
+ * Specifies networkInterface.
+ * @param networkInterface The network interface properties
+ * @return the next update stage
+ */
+ Update withNetworkInterface(NetworkInterfacePropertiesFragment networkInterface);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify Notes.
+ */
+ interface WithNotes {
+ /**
+ * Specifies notes.
+ * @param notes The notes of the virtual machine
+ * @return the next update stage
+ */
+ Update withNotes(String notes);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify OsType.
+ */
+ interface WithOsType {
+ /**
+ * Specifies osType.
+ * @param osType The OS type of the virtual machine
+ * @return the next update stage
+ */
+ Update withOsType(String osType);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify OwnerObjectId.
+ */
+ interface WithOwnerObjectId {
+ /**
+ * Specifies ownerObjectId.
+ * @param ownerObjectId The object identifier of the owner of the virtual machine
+ * @return the next update stage
+ */
+ Update withOwnerObjectId(String ownerObjectId);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify OwnerUserPrincipalName.
+ */
+ interface WithOwnerUserPrincipalName {
+ /**
+ * Specifies ownerUserPrincipalName.
+ * @param ownerUserPrincipalName The user principal name of the virtual machine owner
+ * @return the next update stage
+ */
+ Update withOwnerUserPrincipalName(String ownerUserPrincipalName);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify Password.
+ */
+ interface WithPassword {
+ /**
+ * Specifies password.
+ * @param password The password of the virtual machine administrator
+ * @return the next update stage
+ */
+ Update withPassword(String password);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next update stage
+ */
+ Update withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify Size.
+ */
+ interface WithSize {
+ /**
+ * Specifies size.
+ * @param size The size of the virtual machine
+ * @return the next update stage
+ */
+ Update withSize(String size);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify SshKey.
+ */
+ interface WithSshKey {
+ /**
+ * Specifies sshKey.
+ * @param sshKey The SSH key of the virtual machine administrator
+ * @return the next update stage
+ */
+ Update withSshKey(String sshKey);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify StorageType.
+ */
+ interface WithStorageType {
+ /**
+ * Specifies storageType.
+ * @param storageType Storage type to use for virtual machine (i.e. Standard, Premium)
+ * @return the next update stage
+ */
+ Update withStorageType(String storageType);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next update stage
+ */
+ Update withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify UserName.
+ */
+ interface WithUserName {
+ /**
+ * Specifies userName.
+ * @param userName The user name of the virtual machine
+ * @return the next update stage
+ */
+ Update withUserName(String userName);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify VirtualMachineCreationSource.
+ */
+ interface WithVirtualMachineCreationSource {
+ /**
+ * Specifies virtualMachineCreationSource.
+ * @param virtualMachineCreationSource Tells source of creation of lab virtual machine. Output property only. Possible values include: 'FromCustomImage', 'FromGalleryImage'
+ * @return the next update stage
+ */
+ Update withVirtualMachineCreationSource(VirtualMachineCreationSource virtualMachineCreationSource);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVirtualMachineCreationParameter.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVirtualMachineCreationParameter.java
new file mode 100644
index 000000000000..9b913ddedd4c
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVirtualMachineCreationParameter.java
@@ -0,0 +1,912 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import org.joda.time.DateTime;
+import java.util.List;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.ApplicableScheduleInner;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Properties for creating a virtual machine.
+ */
+@JsonFlatten
+public class LabVirtualMachineCreationParameter {
+ /**
+ * The number of virtual machine instances to create.
+ */
+ @JsonProperty(value = "properties.bulkCreationParameters")
+ private BulkCreationParameters bulkCreationParameters;
+
+ /**
+ * The notes of the virtual machine.
+ */
+ @JsonProperty(value = "properties.notes")
+ private String notes;
+
+ /**
+ * The object identifier of the owner of the virtual machine.
+ */
+ @JsonProperty(value = "properties.ownerObjectId")
+ private String ownerObjectId;
+
+ /**
+ * The user principal name of the virtual machine owner.
+ */
+ @JsonProperty(value = "properties.ownerUserPrincipalName")
+ private String ownerUserPrincipalName;
+
+ /**
+ * The object identifier of the creator of the virtual machine.
+ */
+ @JsonProperty(value = "properties.createdByUserId")
+ private String createdByUserId;
+
+ /**
+ * The email address of creator of the virtual machine.
+ */
+ @JsonProperty(value = "properties.createdByUser")
+ private String createdByUser;
+
+ /**
+ * The creation date of the virtual machine.
+ */
+ @JsonProperty(value = "properties.createdDate")
+ private DateTime createdDate;
+
+ /**
+ * The custom image identifier of the virtual machine.
+ */
+ @JsonProperty(value = "properties.customImageId")
+ private String customImageId;
+
+ /**
+ * The OS type of the virtual machine.
+ */
+ @JsonProperty(value = "properties.osType")
+ private String osType;
+
+ /**
+ * The size of the virtual machine.
+ */
+ @JsonProperty(value = "properties.size")
+ private String size;
+
+ /**
+ * The user name of the virtual machine.
+ */
+ @JsonProperty(value = "properties.userName")
+ private String userName;
+
+ /**
+ * The password of the virtual machine administrator.
+ */
+ @JsonProperty(value = "properties.password")
+ private String password;
+
+ /**
+ * The SSH key of the virtual machine administrator.
+ */
+ @JsonProperty(value = "properties.sshKey")
+ private String sshKey;
+
+ /**
+ * Indicates whether this virtual machine uses an SSH key for
+ * authentication.
+ */
+ @JsonProperty(value = "properties.isAuthenticationWithSshKey")
+ private Boolean isAuthenticationWithSshKey;
+
+ /**
+ * The fully-qualified domain name of the virtual machine.
+ */
+ @JsonProperty(value = "properties.fqdn")
+ private String fqdn;
+
+ /**
+ * The lab subnet name of the virtual machine.
+ */
+ @JsonProperty(value = "properties.labSubnetName")
+ private String labSubnetName;
+
+ /**
+ * The lab virtual network identifier of the virtual machine.
+ */
+ @JsonProperty(value = "properties.labVirtualNetworkId")
+ private String labVirtualNetworkId;
+
+ /**
+ * Indicates whether the virtual machine is to be created without a public
+ * IP address.
+ */
+ @JsonProperty(value = "properties.disallowPublicIpAddress")
+ private Boolean disallowPublicIpAddress;
+
+ /**
+ * The artifacts to be installed on the virtual machine.
+ */
+ @JsonProperty(value = "properties.artifacts")
+ private List artifacts;
+
+ /**
+ * The artifact deployment status for the virtual machine.
+ */
+ @JsonProperty(value = "properties.artifactDeploymentStatus")
+ private ArtifactDeploymentStatusProperties artifactDeploymentStatus;
+
+ /**
+ * The Microsoft Azure Marketplace image reference of the virtual machine.
+ */
+ @JsonProperty(value = "properties.galleryImageReference")
+ private GalleryImageReference galleryImageReference;
+
+ /**
+ * The compute virtual machine properties.
+ */
+ @JsonProperty(value = "properties.computeVm")
+ private ComputeVmProperties computeVm;
+
+ /**
+ * The network interface properties.
+ */
+ @JsonProperty(value = "properties.networkInterface")
+ private NetworkInterfaceProperties networkInterface;
+
+ /**
+ * The applicable schedule for the virtual machine.
+ */
+ @JsonProperty(value = "properties.applicableSchedule")
+ private ApplicableScheduleInner applicableSchedule;
+
+ /**
+ * The expiration date for VM.
+ */
+ @JsonProperty(value = "properties.expirationDate")
+ private DateTime expirationDate;
+
+ /**
+ * Indicates whether another user can take ownership of the virtual
+ * machine.
+ */
+ @JsonProperty(value = "properties.allowClaim")
+ private Boolean allowClaim;
+
+ /**
+ * Storage type to use for virtual machine (i.e. Standard, Premium).
+ */
+ @JsonProperty(value = "properties.storageType")
+ private String storageType;
+
+ /**
+ * Tells source of creation of lab virtual machine. Output property only.
+ * Possible values include: 'FromCustomImage', 'FromGalleryImage'.
+ */
+ @JsonProperty(value = "properties.virtualMachineCreationSource")
+ private VirtualMachineCreationSource virtualMachineCreationSource;
+
+ /**
+ * The resource ID of the environment that contains this virtual machine,
+ * if any.
+ */
+ @JsonProperty(value = "properties.environmentId")
+ private String environmentId;
+
+ /**
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState")
+ private String provisioningState;
+
+ /**
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier")
+ private String uniqueIdentifier;
+
+ /**
+ * The name of the virtual machine or environment.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * The location of the new virtual machine or environment.
+ */
+ @JsonProperty(value = "location")
+ private String location;
+
+ /**
+ * The tags of the resource.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * Get the number of virtual machine instances to create.
+ *
+ * @return the bulkCreationParameters value
+ */
+ public BulkCreationParameters bulkCreationParameters() {
+ return this.bulkCreationParameters;
+ }
+
+ /**
+ * Set the number of virtual machine instances to create.
+ *
+ * @param bulkCreationParameters the bulkCreationParameters value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withBulkCreationParameters(BulkCreationParameters bulkCreationParameters) {
+ this.bulkCreationParameters = bulkCreationParameters;
+ return this;
+ }
+
+ /**
+ * Get the notes of the virtual machine.
+ *
+ * @return the notes value
+ */
+ public String notes() {
+ return this.notes;
+ }
+
+ /**
+ * Set the notes of the virtual machine.
+ *
+ * @param notes the notes value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withNotes(String notes) {
+ this.notes = notes;
+ return this;
+ }
+
+ /**
+ * Get the object identifier of the owner of the virtual machine.
+ *
+ * @return the ownerObjectId value
+ */
+ public String ownerObjectId() {
+ return this.ownerObjectId;
+ }
+
+ /**
+ * Set the object identifier of the owner of the virtual machine.
+ *
+ * @param ownerObjectId the ownerObjectId value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withOwnerObjectId(String ownerObjectId) {
+ this.ownerObjectId = ownerObjectId;
+ return this;
+ }
+
+ /**
+ * Get the user principal name of the virtual machine owner.
+ *
+ * @return the ownerUserPrincipalName value
+ */
+ public String ownerUserPrincipalName() {
+ return this.ownerUserPrincipalName;
+ }
+
+ /**
+ * Set the user principal name of the virtual machine owner.
+ *
+ * @param ownerUserPrincipalName the ownerUserPrincipalName value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withOwnerUserPrincipalName(String ownerUserPrincipalName) {
+ this.ownerUserPrincipalName = ownerUserPrincipalName;
+ return this;
+ }
+
+ /**
+ * Get the object identifier of the creator of the virtual machine.
+ *
+ * @return the createdByUserId value
+ */
+ public String createdByUserId() {
+ return this.createdByUserId;
+ }
+
+ /**
+ * Set the object identifier of the creator of the virtual machine.
+ *
+ * @param createdByUserId the createdByUserId value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withCreatedByUserId(String createdByUserId) {
+ this.createdByUserId = createdByUserId;
+ return this;
+ }
+
+ /**
+ * Get the email address of creator of the virtual machine.
+ *
+ * @return the createdByUser value
+ */
+ public String createdByUser() {
+ return this.createdByUser;
+ }
+
+ /**
+ * Set the email address of creator of the virtual machine.
+ *
+ * @param createdByUser the createdByUser value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withCreatedByUser(String createdByUser) {
+ this.createdByUser = createdByUser;
+ return this;
+ }
+
+ /**
+ * Get the creation date of the virtual machine.
+ *
+ * @return the createdDate value
+ */
+ public DateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Set the creation date of the virtual machine.
+ *
+ * @param createdDate the createdDate value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withCreatedDate(DateTime createdDate) {
+ this.createdDate = createdDate;
+ return this;
+ }
+
+ /**
+ * Get the custom image identifier of the virtual machine.
+ *
+ * @return the customImageId value
+ */
+ public String customImageId() {
+ return this.customImageId;
+ }
+
+ /**
+ * Set the custom image identifier of the virtual machine.
+ *
+ * @param customImageId the customImageId value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withCustomImageId(String customImageId) {
+ this.customImageId = customImageId;
+ return this;
+ }
+
+ /**
+ * Get the OS type of the virtual machine.
+ *
+ * @return the osType value
+ */
+ public String osType() {
+ return this.osType;
+ }
+
+ /**
+ * Set the OS type of the virtual machine.
+ *
+ * @param osType the osType value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withOsType(String osType) {
+ this.osType = osType;
+ return this;
+ }
+
+ /**
+ * Get the size of the virtual machine.
+ *
+ * @return the size value
+ */
+ public String size() {
+ return this.size;
+ }
+
+ /**
+ * Set the size of the virtual machine.
+ *
+ * @param size the size value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withSize(String size) {
+ this.size = size;
+ return this;
+ }
+
+ /**
+ * Get the user name of the virtual machine.
+ *
+ * @return the userName value
+ */
+ public String userName() {
+ return this.userName;
+ }
+
+ /**
+ * Set the user name of the virtual machine.
+ *
+ * @param userName the userName value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withUserName(String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+ /**
+ * Get the password of the virtual machine administrator.
+ *
+ * @return the password value
+ */
+ public String password() {
+ return this.password;
+ }
+
+ /**
+ * Set the password of the virtual machine administrator.
+ *
+ * @param password the password value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withPassword(String password) {
+ this.password = password;
+ return this;
+ }
+
+ /**
+ * Get the SSH key of the virtual machine administrator.
+ *
+ * @return the sshKey value
+ */
+ public String sshKey() {
+ return this.sshKey;
+ }
+
+ /**
+ * Set the SSH key of the virtual machine administrator.
+ *
+ * @param sshKey the sshKey value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withSshKey(String sshKey) {
+ this.sshKey = sshKey;
+ return this;
+ }
+
+ /**
+ * Get indicates whether this virtual machine uses an SSH key for authentication.
+ *
+ * @return the isAuthenticationWithSshKey value
+ */
+ public Boolean isAuthenticationWithSshKey() {
+ return this.isAuthenticationWithSshKey;
+ }
+
+ /**
+ * Set indicates whether this virtual machine uses an SSH key for authentication.
+ *
+ * @param isAuthenticationWithSshKey the isAuthenticationWithSshKey value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withIsAuthenticationWithSshKey(Boolean isAuthenticationWithSshKey) {
+ this.isAuthenticationWithSshKey = isAuthenticationWithSshKey;
+ return this;
+ }
+
+ /**
+ * Get the fully-qualified domain name of the virtual machine.
+ *
+ * @return the fqdn value
+ */
+ public String fqdn() {
+ return this.fqdn;
+ }
+
+ /**
+ * Set the fully-qualified domain name of the virtual machine.
+ *
+ * @param fqdn the fqdn value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withFqdn(String fqdn) {
+ this.fqdn = fqdn;
+ return this;
+ }
+
+ /**
+ * Get the lab subnet name of the virtual machine.
+ *
+ * @return the labSubnetName value
+ */
+ public String labSubnetName() {
+ return this.labSubnetName;
+ }
+
+ /**
+ * Set the lab subnet name of the virtual machine.
+ *
+ * @param labSubnetName the labSubnetName value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withLabSubnetName(String labSubnetName) {
+ this.labSubnetName = labSubnetName;
+ return this;
+ }
+
+ /**
+ * Get the lab virtual network identifier of the virtual machine.
+ *
+ * @return the labVirtualNetworkId value
+ */
+ public String labVirtualNetworkId() {
+ return this.labVirtualNetworkId;
+ }
+
+ /**
+ * Set the lab virtual network identifier of the virtual machine.
+ *
+ * @param labVirtualNetworkId the labVirtualNetworkId value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withLabVirtualNetworkId(String labVirtualNetworkId) {
+ this.labVirtualNetworkId = labVirtualNetworkId;
+ return this;
+ }
+
+ /**
+ * Get indicates whether the virtual machine is to be created without a public IP address.
+ *
+ * @return the disallowPublicIpAddress value
+ */
+ public Boolean disallowPublicIpAddress() {
+ return this.disallowPublicIpAddress;
+ }
+
+ /**
+ * Set indicates whether the virtual machine is to be created without a public IP address.
+ *
+ * @param disallowPublicIpAddress the disallowPublicIpAddress value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withDisallowPublicIpAddress(Boolean disallowPublicIpAddress) {
+ this.disallowPublicIpAddress = disallowPublicIpAddress;
+ return this;
+ }
+
+ /**
+ * Get the artifacts to be installed on the virtual machine.
+ *
+ * @return the artifacts value
+ */
+ public List artifacts() {
+ return this.artifacts;
+ }
+
+ /**
+ * Set the artifacts to be installed on the virtual machine.
+ *
+ * @param artifacts the artifacts value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withArtifacts(List artifacts) {
+ this.artifacts = artifacts;
+ return this;
+ }
+
+ /**
+ * Get the artifact deployment status for the virtual machine.
+ *
+ * @return the artifactDeploymentStatus value
+ */
+ public ArtifactDeploymentStatusProperties artifactDeploymentStatus() {
+ return this.artifactDeploymentStatus;
+ }
+
+ /**
+ * Set the artifact deployment status for the virtual machine.
+ *
+ * @param artifactDeploymentStatus the artifactDeploymentStatus value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withArtifactDeploymentStatus(ArtifactDeploymentStatusProperties artifactDeploymentStatus) {
+ this.artifactDeploymentStatus = artifactDeploymentStatus;
+ return this;
+ }
+
+ /**
+ * Get the Microsoft Azure Marketplace image reference of the virtual machine.
+ *
+ * @return the galleryImageReference value
+ */
+ public GalleryImageReference galleryImageReference() {
+ return this.galleryImageReference;
+ }
+
+ /**
+ * Set the Microsoft Azure Marketplace image reference of the virtual machine.
+ *
+ * @param galleryImageReference the galleryImageReference value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withGalleryImageReference(GalleryImageReference galleryImageReference) {
+ this.galleryImageReference = galleryImageReference;
+ return this;
+ }
+
+ /**
+ * Get the compute virtual machine properties.
+ *
+ * @return the computeVm value
+ */
+ public ComputeVmProperties computeVm() {
+ return this.computeVm;
+ }
+
+ /**
+ * Set the compute virtual machine properties.
+ *
+ * @param computeVm the computeVm value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withComputeVm(ComputeVmProperties computeVm) {
+ this.computeVm = computeVm;
+ return this;
+ }
+
+ /**
+ * Get the network interface properties.
+ *
+ * @return the networkInterface value
+ */
+ public NetworkInterfaceProperties networkInterface() {
+ return this.networkInterface;
+ }
+
+ /**
+ * Set the network interface properties.
+ *
+ * @param networkInterface the networkInterface value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withNetworkInterface(NetworkInterfaceProperties networkInterface) {
+ this.networkInterface = networkInterface;
+ return this;
+ }
+
+ /**
+ * Get the applicable schedule for the virtual machine.
+ *
+ * @return the applicableSchedule value
+ */
+ public ApplicableScheduleInner applicableSchedule() {
+ return this.applicableSchedule;
+ }
+
+ /**
+ * Set the applicable schedule for the virtual machine.
+ *
+ * @param applicableSchedule the applicableSchedule value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withApplicableSchedule(ApplicableScheduleInner applicableSchedule) {
+ this.applicableSchedule = applicableSchedule;
+ return this;
+ }
+
+ /**
+ * Get the expiration date for VM.
+ *
+ * @return the expirationDate value
+ */
+ public DateTime expirationDate() {
+ return this.expirationDate;
+ }
+
+ /**
+ * Set the expiration date for VM.
+ *
+ * @param expirationDate the expirationDate value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withExpirationDate(DateTime expirationDate) {
+ this.expirationDate = expirationDate;
+ return this;
+ }
+
+ /**
+ * Get indicates whether another user can take ownership of the virtual machine.
+ *
+ * @return the allowClaim value
+ */
+ public Boolean allowClaim() {
+ return this.allowClaim;
+ }
+
+ /**
+ * Set indicates whether another user can take ownership of the virtual machine.
+ *
+ * @param allowClaim the allowClaim value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withAllowClaim(Boolean allowClaim) {
+ this.allowClaim = allowClaim;
+ return this;
+ }
+
+ /**
+ * Get storage type to use for virtual machine (i.e. Standard, Premium).
+ *
+ * @return the storageType value
+ */
+ public String storageType() {
+ return this.storageType;
+ }
+
+ /**
+ * Set storage type to use for virtual machine (i.e. Standard, Premium).
+ *
+ * @param storageType the storageType value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withStorageType(String storageType) {
+ this.storageType = storageType;
+ return this;
+ }
+
+ /**
+ * Get tells source of creation of lab virtual machine. Output property only. Possible values include: 'FromCustomImage', 'FromGalleryImage'.
+ *
+ * @return the virtualMachineCreationSource value
+ */
+ public VirtualMachineCreationSource virtualMachineCreationSource() {
+ return this.virtualMachineCreationSource;
+ }
+
+ /**
+ * Set tells source of creation of lab virtual machine. Output property only. Possible values include: 'FromCustomImage', 'FromGalleryImage'.
+ *
+ * @param virtualMachineCreationSource the virtualMachineCreationSource value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withVirtualMachineCreationSource(VirtualMachineCreationSource virtualMachineCreationSource) {
+ this.virtualMachineCreationSource = virtualMachineCreationSource;
+ return this;
+ }
+
+ /**
+ * Get the resource ID of the environment that contains this virtual machine, if any.
+ *
+ * @return the environmentId value
+ */
+ public String environmentId() {
+ return this.environmentId;
+ }
+
+ /**
+ * Set the resource ID of the environment that contains this virtual machine, if any.
+ *
+ * @param environmentId the environmentId value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withEnvironmentId(String environmentId) {
+ this.environmentId = environmentId;
+ return this;
+ }
+
+ /**
+ * Get the provisioning status of the resource.
+ *
+ * @return the provisioningState value
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Set the provisioning status of the resource.
+ *
+ * @param provisioningState the provisioningState value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withProvisioningState(String provisioningState) {
+ this.provisioningState = provisioningState;
+ return this;
+ }
+
+ /**
+ * Get the unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /**
+ * Set the unique immutable identifier of a resource (Guid).
+ *
+ * @param uniqueIdentifier the uniqueIdentifier value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withUniqueIdentifier(String uniqueIdentifier) {
+ this.uniqueIdentifier = uniqueIdentifier;
+ return this;
+ }
+
+ /**
+ * Get the name of the virtual machine or environment.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the virtual machine or environment.
+ *
+ * @param name the name value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the location of the new virtual machine or environment.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set the location of the new virtual machine or environment.
+ *
+ * @param location the location value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+ /**
+ * Get the tags of the resource.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set the tags of the resource.
+ *
+ * @param tags the tags value to set
+ * @return the LabVirtualMachineCreationParameter object itself.
+ */
+ public LabVirtualMachineCreationParameter withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVirtualMachineFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVirtualMachineFragment.java
new file mode 100644
index 000000000000..40cffbb2ed42
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LabVirtualMachineFragment.java
@@ -0,0 +1,809 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import org.joda.time.DateTime;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.rest.SkipParentValidation;
+import com.microsoft.azure.Resource;
+
+/**
+ * A virtual machine.
+ */
+@JsonFlatten
+@SkipParentValidation
+public class LabVirtualMachineFragment extends Resource {
+ /**
+ * The notes of the virtual machine.
+ */
+ @JsonProperty(value = "properties.notes")
+ private String notes;
+
+ /**
+ * The object identifier of the owner of the virtual machine.
+ */
+ @JsonProperty(value = "properties.ownerObjectId")
+ private String ownerObjectId;
+
+ /**
+ * The user principal name of the virtual machine owner.
+ */
+ @JsonProperty(value = "properties.ownerUserPrincipalName")
+ private String ownerUserPrincipalName;
+
+ /**
+ * The object identifier of the creator of the virtual machine.
+ */
+ @JsonProperty(value = "properties.createdByUserId")
+ private String createdByUserId;
+
+ /**
+ * The email address of creator of the virtual machine.
+ */
+ @JsonProperty(value = "properties.createdByUser")
+ private String createdByUser;
+
+ /**
+ * The creation date of the virtual machine.
+ */
+ @JsonProperty(value = "properties.createdDate")
+ private DateTime createdDate;
+
+ /**
+ * The custom image identifier of the virtual machine.
+ */
+ @JsonProperty(value = "properties.customImageId")
+ private String customImageId;
+
+ /**
+ * The OS type of the virtual machine.
+ */
+ @JsonProperty(value = "properties.osType")
+ private String osType;
+
+ /**
+ * The size of the virtual machine.
+ */
+ @JsonProperty(value = "properties.size")
+ private String size;
+
+ /**
+ * The user name of the virtual machine.
+ */
+ @JsonProperty(value = "properties.userName")
+ private String userName;
+
+ /**
+ * The password of the virtual machine administrator.
+ */
+ @JsonProperty(value = "properties.password")
+ private String password;
+
+ /**
+ * The SSH key of the virtual machine administrator.
+ */
+ @JsonProperty(value = "properties.sshKey")
+ private String sshKey;
+
+ /**
+ * Indicates whether this virtual machine uses an SSH key for
+ * authentication.
+ */
+ @JsonProperty(value = "properties.isAuthenticationWithSshKey")
+ private Boolean isAuthenticationWithSshKey;
+
+ /**
+ * The fully-qualified domain name of the virtual machine.
+ */
+ @JsonProperty(value = "properties.fqdn")
+ private String fqdn;
+
+ /**
+ * The lab subnet name of the virtual machine.
+ */
+ @JsonProperty(value = "properties.labSubnetName")
+ private String labSubnetName;
+
+ /**
+ * The lab virtual network identifier of the virtual machine.
+ */
+ @JsonProperty(value = "properties.labVirtualNetworkId")
+ private String labVirtualNetworkId;
+
+ /**
+ * Indicates whether the virtual machine is to be created without a public
+ * IP address.
+ */
+ @JsonProperty(value = "properties.disallowPublicIpAddress")
+ private Boolean disallowPublicIpAddress;
+
+ /**
+ * The artifacts to be installed on the virtual machine.
+ */
+ @JsonProperty(value = "properties.artifacts")
+ private List artifacts;
+
+ /**
+ * The artifact deployment status for the virtual machine.
+ */
+ @JsonProperty(value = "properties.artifactDeploymentStatus")
+ private ArtifactDeploymentStatusPropertiesFragment artifactDeploymentStatus;
+
+ /**
+ * The Microsoft Azure Marketplace image reference of the virtual machine.
+ */
+ @JsonProperty(value = "properties.galleryImageReference")
+ private GalleryImageReferenceFragment galleryImageReference;
+
+ /**
+ * The compute virtual machine properties.
+ */
+ @JsonProperty(value = "properties.computeVm")
+ private ComputeVmPropertiesFragment computeVm;
+
+ /**
+ * The network interface properties.
+ */
+ @JsonProperty(value = "properties.networkInterface")
+ private NetworkInterfacePropertiesFragment networkInterface;
+
+ /**
+ * The applicable schedule for the virtual machine.
+ */
+ @JsonProperty(value = "properties.applicableSchedule")
+ private ApplicableScheduleFragment applicableSchedule;
+
+ /**
+ * The expiration date for VM.
+ */
+ @JsonProperty(value = "properties.expirationDate")
+ private DateTime expirationDate;
+
+ /**
+ * Indicates whether another user can take ownership of the virtual
+ * machine.
+ */
+ @JsonProperty(value = "properties.allowClaim")
+ private Boolean allowClaim;
+
+ /**
+ * Storage type to use for virtual machine (i.e. Standard, Premium).
+ */
+ @JsonProperty(value = "properties.storageType")
+ private String storageType;
+
+ /**
+ * Tells source of creation of lab virtual machine. Output property only.
+ * Possible values include: 'FromCustomImage', 'FromGalleryImage'.
+ */
+ @JsonProperty(value = "properties.virtualMachineCreationSource")
+ private VirtualMachineCreationSource virtualMachineCreationSource;
+
+ /**
+ * The resource ID of the environment that contains this virtual machine,
+ * if any.
+ */
+ @JsonProperty(value = "properties.environmentId")
+ private String environmentId;
+
+ /**
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState")
+ private String provisioningState;
+
+ /**
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier")
+ private String uniqueIdentifier;
+
+ /**
+ * Get the notes of the virtual machine.
+ *
+ * @return the notes value
+ */
+ public String notes() {
+ return this.notes;
+ }
+
+ /**
+ * Set the notes of the virtual machine.
+ *
+ * @param notes the notes value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withNotes(String notes) {
+ this.notes = notes;
+ return this;
+ }
+
+ /**
+ * Get the object identifier of the owner of the virtual machine.
+ *
+ * @return the ownerObjectId value
+ */
+ public String ownerObjectId() {
+ return this.ownerObjectId;
+ }
+
+ /**
+ * Set the object identifier of the owner of the virtual machine.
+ *
+ * @param ownerObjectId the ownerObjectId value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withOwnerObjectId(String ownerObjectId) {
+ this.ownerObjectId = ownerObjectId;
+ return this;
+ }
+
+ /**
+ * Get the user principal name of the virtual machine owner.
+ *
+ * @return the ownerUserPrincipalName value
+ */
+ public String ownerUserPrincipalName() {
+ return this.ownerUserPrincipalName;
+ }
+
+ /**
+ * Set the user principal name of the virtual machine owner.
+ *
+ * @param ownerUserPrincipalName the ownerUserPrincipalName value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withOwnerUserPrincipalName(String ownerUserPrincipalName) {
+ this.ownerUserPrincipalName = ownerUserPrincipalName;
+ return this;
+ }
+
+ /**
+ * Get the object identifier of the creator of the virtual machine.
+ *
+ * @return the createdByUserId value
+ */
+ public String createdByUserId() {
+ return this.createdByUserId;
+ }
+
+ /**
+ * Set the object identifier of the creator of the virtual machine.
+ *
+ * @param createdByUserId the createdByUserId value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withCreatedByUserId(String createdByUserId) {
+ this.createdByUserId = createdByUserId;
+ return this;
+ }
+
+ /**
+ * Get the email address of creator of the virtual machine.
+ *
+ * @return the createdByUser value
+ */
+ public String createdByUser() {
+ return this.createdByUser;
+ }
+
+ /**
+ * Set the email address of creator of the virtual machine.
+ *
+ * @param createdByUser the createdByUser value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withCreatedByUser(String createdByUser) {
+ this.createdByUser = createdByUser;
+ return this;
+ }
+
+ /**
+ * Get the creation date of the virtual machine.
+ *
+ * @return the createdDate value
+ */
+ public DateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Set the creation date of the virtual machine.
+ *
+ * @param createdDate the createdDate value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withCreatedDate(DateTime createdDate) {
+ this.createdDate = createdDate;
+ return this;
+ }
+
+ /**
+ * Get the custom image identifier of the virtual machine.
+ *
+ * @return the customImageId value
+ */
+ public String customImageId() {
+ return this.customImageId;
+ }
+
+ /**
+ * Set the custom image identifier of the virtual machine.
+ *
+ * @param customImageId the customImageId value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withCustomImageId(String customImageId) {
+ this.customImageId = customImageId;
+ return this;
+ }
+
+ /**
+ * Get the OS type of the virtual machine.
+ *
+ * @return the osType value
+ */
+ public String osType() {
+ return this.osType;
+ }
+
+ /**
+ * Set the OS type of the virtual machine.
+ *
+ * @param osType the osType value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withOsType(String osType) {
+ this.osType = osType;
+ return this;
+ }
+
+ /**
+ * Get the size of the virtual machine.
+ *
+ * @return the size value
+ */
+ public String size() {
+ return this.size;
+ }
+
+ /**
+ * Set the size of the virtual machine.
+ *
+ * @param size the size value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withSize(String size) {
+ this.size = size;
+ return this;
+ }
+
+ /**
+ * Get the user name of the virtual machine.
+ *
+ * @return the userName value
+ */
+ public String userName() {
+ return this.userName;
+ }
+
+ /**
+ * Set the user name of the virtual machine.
+ *
+ * @param userName the userName value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withUserName(String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+ /**
+ * Get the password of the virtual machine administrator.
+ *
+ * @return the password value
+ */
+ public String password() {
+ return this.password;
+ }
+
+ /**
+ * Set the password of the virtual machine administrator.
+ *
+ * @param password the password value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withPassword(String password) {
+ this.password = password;
+ return this;
+ }
+
+ /**
+ * Get the SSH key of the virtual machine administrator.
+ *
+ * @return the sshKey value
+ */
+ public String sshKey() {
+ return this.sshKey;
+ }
+
+ /**
+ * Set the SSH key of the virtual machine administrator.
+ *
+ * @param sshKey the sshKey value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withSshKey(String sshKey) {
+ this.sshKey = sshKey;
+ return this;
+ }
+
+ /**
+ * Get indicates whether this virtual machine uses an SSH key for authentication.
+ *
+ * @return the isAuthenticationWithSshKey value
+ */
+ public Boolean isAuthenticationWithSshKey() {
+ return this.isAuthenticationWithSshKey;
+ }
+
+ /**
+ * Set indicates whether this virtual machine uses an SSH key for authentication.
+ *
+ * @param isAuthenticationWithSshKey the isAuthenticationWithSshKey value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withIsAuthenticationWithSshKey(Boolean isAuthenticationWithSshKey) {
+ this.isAuthenticationWithSshKey = isAuthenticationWithSshKey;
+ return this;
+ }
+
+ /**
+ * Get the fully-qualified domain name of the virtual machine.
+ *
+ * @return the fqdn value
+ */
+ public String fqdn() {
+ return this.fqdn;
+ }
+
+ /**
+ * Set the fully-qualified domain name of the virtual machine.
+ *
+ * @param fqdn the fqdn value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withFqdn(String fqdn) {
+ this.fqdn = fqdn;
+ return this;
+ }
+
+ /**
+ * Get the lab subnet name of the virtual machine.
+ *
+ * @return the labSubnetName value
+ */
+ public String labSubnetName() {
+ return this.labSubnetName;
+ }
+
+ /**
+ * Set the lab subnet name of the virtual machine.
+ *
+ * @param labSubnetName the labSubnetName value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withLabSubnetName(String labSubnetName) {
+ this.labSubnetName = labSubnetName;
+ return this;
+ }
+
+ /**
+ * Get the lab virtual network identifier of the virtual machine.
+ *
+ * @return the labVirtualNetworkId value
+ */
+ public String labVirtualNetworkId() {
+ return this.labVirtualNetworkId;
+ }
+
+ /**
+ * Set the lab virtual network identifier of the virtual machine.
+ *
+ * @param labVirtualNetworkId the labVirtualNetworkId value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withLabVirtualNetworkId(String labVirtualNetworkId) {
+ this.labVirtualNetworkId = labVirtualNetworkId;
+ return this;
+ }
+
+ /**
+ * Get indicates whether the virtual machine is to be created without a public IP address.
+ *
+ * @return the disallowPublicIpAddress value
+ */
+ public Boolean disallowPublicIpAddress() {
+ return this.disallowPublicIpAddress;
+ }
+
+ /**
+ * Set indicates whether the virtual machine is to be created without a public IP address.
+ *
+ * @param disallowPublicIpAddress the disallowPublicIpAddress value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withDisallowPublicIpAddress(Boolean disallowPublicIpAddress) {
+ this.disallowPublicIpAddress = disallowPublicIpAddress;
+ return this;
+ }
+
+ /**
+ * Get the artifacts to be installed on the virtual machine.
+ *
+ * @return the artifacts value
+ */
+ public List artifacts() {
+ return this.artifacts;
+ }
+
+ /**
+ * Set the artifacts to be installed on the virtual machine.
+ *
+ * @param artifacts the artifacts value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withArtifacts(List artifacts) {
+ this.artifacts = artifacts;
+ return this;
+ }
+
+ /**
+ * Get the artifact deployment status for the virtual machine.
+ *
+ * @return the artifactDeploymentStatus value
+ */
+ public ArtifactDeploymentStatusPropertiesFragment artifactDeploymentStatus() {
+ return this.artifactDeploymentStatus;
+ }
+
+ /**
+ * Set the artifact deployment status for the virtual machine.
+ *
+ * @param artifactDeploymentStatus the artifactDeploymentStatus value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withArtifactDeploymentStatus(ArtifactDeploymentStatusPropertiesFragment artifactDeploymentStatus) {
+ this.artifactDeploymentStatus = artifactDeploymentStatus;
+ return this;
+ }
+
+ /**
+ * Get the Microsoft Azure Marketplace image reference of the virtual machine.
+ *
+ * @return the galleryImageReference value
+ */
+ public GalleryImageReferenceFragment galleryImageReference() {
+ return this.galleryImageReference;
+ }
+
+ /**
+ * Set the Microsoft Azure Marketplace image reference of the virtual machine.
+ *
+ * @param galleryImageReference the galleryImageReference value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withGalleryImageReference(GalleryImageReferenceFragment galleryImageReference) {
+ this.galleryImageReference = galleryImageReference;
+ return this;
+ }
+
+ /**
+ * Get the compute virtual machine properties.
+ *
+ * @return the computeVm value
+ */
+ public ComputeVmPropertiesFragment computeVm() {
+ return this.computeVm;
+ }
+
+ /**
+ * Set the compute virtual machine properties.
+ *
+ * @param computeVm the computeVm value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withComputeVm(ComputeVmPropertiesFragment computeVm) {
+ this.computeVm = computeVm;
+ return this;
+ }
+
+ /**
+ * Get the network interface properties.
+ *
+ * @return the networkInterface value
+ */
+ public NetworkInterfacePropertiesFragment networkInterface() {
+ return this.networkInterface;
+ }
+
+ /**
+ * Set the network interface properties.
+ *
+ * @param networkInterface the networkInterface value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withNetworkInterface(NetworkInterfacePropertiesFragment networkInterface) {
+ this.networkInterface = networkInterface;
+ return this;
+ }
+
+ /**
+ * Get the applicable schedule for the virtual machine.
+ *
+ * @return the applicableSchedule value
+ */
+ public ApplicableScheduleFragment applicableSchedule() {
+ return this.applicableSchedule;
+ }
+
+ /**
+ * Set the applicable schedule for the virtual machine.
+ *
+ * @param applicableSchedule the applicableSchedule value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withApplicableSchedule(ApplicableScheduleFragment applicableSchedule) {
+ this.applicableSchedule = applicableSchedule;
+ return this;
+ }
+
+ /**
+ * Get the expiration date for VM.
+ *
+ * @return the expirationDate value
+ */
+ public DateTime expirationDate() {
+ return this.expirationDate;
+ }
+
+ /**
+ * Set the expiration date for VM.
+ *
+ * @param expirationDate the expirationDate value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withExpirationDate(DateTime expirationDate) {
+ this.expirationDate = expirationDate;
+ return this;
+ }
+
+ /**
+ * Get indicates whether another user can take ownership of the virtual machine.
+ *
+ * @return the allowClaim value
+ */
+ public Boolean allowClaim() {
+ return this.allowClaim;
+ }
+
+ /**
+ * Set indicates whether another user can take ownership of the virtual machine.
+ *
+ * @param allowClaim the allowClaim value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withAllowClaim(Boolean allowClaim) {
+ this.allowClaim = allowClaim;
+ return this;
+ }
+
+ /**
+ * Get storage type to use for virtual machine (i.e. Standard, Premium).
+ *
+ * @return the storageType value
+ */
+ public String storageType() {
+ return this.storageType;
+ }
+
+ /**
+ * Set storage type to use for virtual machine (i.e. Standard, Premium).
+ *
+ * @param storageType the storageType value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withStorageType(String storageType) {
+ this.storageType = storageType;
+ return this;
+ }
+
+ /**
+ * Get tells source of creation of lab virtual machine. Output property only. Possible values include: 'FromCustomImage', 'FromGalleryImage'.
+ *
+ * @return the virtualMachineCreationSource value
+ */
+ public VirtualMachineCreationSource virtualMachineCreationSource() {
+ return this.virtualMachineCreationSource;
+ }
+
+ /**
+ * Set tells source of creation of lab virtual machine. Output property only. Possible values include: 'FromCustomImage', 'FromGalleryImage'.
+ *
+ * @param virtualMachineCreationSource the virtualMachineCreationSource value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withVirtualMachineCreationSource(VirtualMachineCreationSource virtualMachineCreationSource) {
+ this.virtualMachineCreationSource = virtualMachineCreationSource;
+ return this;
+ }
+
+ /**
+ * Get the resource ID of the environment that contains this virtual machine, if any.
+ *
+ * @return the environmentId value
+ */
+ public String environmentId() {
+ return this.environmentId;
+ }
+
+ /**
+ * Set the resource ID of the environment that contains this virtual machine, if any.
+ *
+ * @param environmentId the environmentId value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withEnvironmentId(String environmentId) {
+ this.environmentId = environmentId;
+ return this;
+ }
+
+ /**
+ * Get the provisioning status of the resource.
+ *
+ * @return the provisioningState value
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Set the provisioning status of the resource.
+ *
+ * @param provisioningState the provisioningState value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withProvisioningState(String provisioningState) {
+ this.provisioningState = provisioningState;
+ return this;
+ }
+
+ /**
+ * Get the unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /**
+ * Set the unique immutable identifier of a resource (Guid).
+ *
+ * @param uniqueIdentifier the uniqueIdentifier value to set
+ * @return the LabVirtualMachineFragment object itself.
+ */
+ public LabVirtualMachineFragment withUniqueIdentifier(String uniqueIdentifier) {
+ this.uniqueIdentifier = uniqueIdentifier;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Labs.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Labs.java
new file mode 100644
index 000000000000..c89d21beb6d3
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Labs.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import com.microsoft.azure.arm.resources.collection.SupportsDeletingByResourceGroup;
+import com.microsoft.azure.arm.resources.collection.SupportsBatchDeletion;
+import com.microsoft.azure.arm.resources.collection.SupportsGettingByResourceGroup;
+import rx.Observable;
+import com.microsoft.azure.arm.resources.collection.SupportsListingByResourceGroup;
+import com.microsoft.azure.arm.collection.SupportsListing;
+import rx.Completable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.LabsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Labs.
+ */
+public interface Labs extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner {
+ /**
+ * Claim a random claimable virtual machine in the lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable claimAnyVmAsync(String resourceGroupName, String name);
+
+ /**
+ * Create virtual machines in a lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param labVirtualMachineCreationParameter Properties for creating a virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable createEnvironmentAsync(String resourceGroupName, String name, LabVirtualMachineCreationParameter labVirtualMachineCreationParameter);
+
+ /**
+ * Exports the lab resource usage into a storage account This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param exportResourceUsageParameters The parameters of the export operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable exportResourceUsageAsync(String resourceGroupName, String name, ExportResourceUsageParameters exportResourceUsageParameters);
+
+ /**
+ * Generate a URI for uploading custom disk images to a Lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable generateUploadUriAsync(String resourceGroupName, String name);
+
+ /**
+ * List disk images available for custom image creation.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listVhdsAsync(final String resourceGroupName, final String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LinuxOsInfo.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LinuxOsInfo.java
new file mode 100644
index 000000000000..b28411d46dce
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LinuxOsInfo.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Information about a Linux OS.
+ */
+public class LinuxOsInfo {
+ /**
+ * The state of the Linux OS (i.e. NonDeprovisioned, DeprovisionRequested,
+ * DeprovisionApplied). Possible values include: 'NonDeprovisioned',
+ * 'DeprovisionRequested', 'DeprovisionApplied'.
+ */
+ @JsonProperty(value = "linuxOsState")
+ private LinuxOsState linuxOsState;
+
+ /**
+ * Get the state of the Linux OS (i.e. NonDeprovisioned, DeprovisionRequested, DeprovisionApplied). Possible values include: 'NonDeprovisioned', 'DeprovisionRequested', 'DeprovisionApplied'.
+ *
+ * @return the linuxOsState value
+ */
+ public LinuxOsState linuxOsState() {
+ return this.linuxOsState;
+ }
+
+ /**
+ * Set the state of the Linux OS (i.e. NonDeprovisioned, DeprovisionRequested, DeprovisionApplied). Possible values include: 'NonDeprovisioned', 'DeprovisionRequested', 'DeprovisionApplied'.
+ *
+ * @param linuxOsState the linuxOsState value to set
+ * @return the LinuxOsInfo object itself.
+ */
+ public LinuxOsInfo withLinuxOsState(LinuxOsState linuxOsState) {
+ this.linuxOsState = linuxOsState;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LinuxOsState.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LinuxOsState.java
new file mode 100644
index 000000000000..f84bfbae4a91
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/LinuxOsState.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for LinuxOsState.
+ */
+public final class LinuxOsState extends ExpandableStringEnum {
+ /** Static value NonDeprovisioned for LinuxOsState. */
+ public static final LinuxOsState NON_DEPROVISIONED = fromString("NonDeprovisioned");
+
+ /** Static value DeprovisionRequested for LinuxOsState. */
+ public static final LinuxOsState DEPROVISION_REQUESTED = fromString("DeprovisionRequested");
+
+ /** Static value DeprovisionApplied for LinuxOsState. */
+ public static final LinuxOsState DEPROVISION_APPLIED = fromString("DeprovisionApplied");
+
+ /**
+ * Creates or finds a LinuxOsState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding LinuxOsState
+ */
+ @JsonCreator
+ public static LinuxOsState fromString(String name) {
+ return fromString(name, LinuxOsState.class);
+ }
+
+ /**
+ * @return known LinuxOsState values
+ */
+ public static Collection values() {
+ return values(LinuxOsState.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NetworkInterfaceProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NetworkInterfaceProperties.java
new file mode 100644
index 000000000000..c70711c06b7e
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NetworkInterfaceProperties.java
@@ -0,0 +1,254 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of a network interface.
+ */
+public class NetworkInterfaceProperties {
+ /**
+ * The resource ID of the virtual network.
+ */
+ @JsonProperty(value = "virtualNetworkId")
+ private String virtualNetworkId;
+
+ /**
+ * The resource ID of the sub net.
+ */
+ @JsonProperty(value = "subnetId")
+ private String subnetId;
+
+ /**
+ * The resource ID of the public IP address.
+ */
+ @JsonProperty(value = "publicIpAddressId")
+ private String publicIpAddressId;
+
+ /**
+ * The public IP address.
+ */
+ @JsonProperty(value = "publicIpAddress")
+ private String publicIpAddress;
+
+ /**
+ * The private IP address.
+ */
+ @JsonProperty(value = "privateIpAddress")
+ private String privateIpAddress;
+
+ /**
+ * The DNS name.
+ */
+ @JsonProperty(value = "dnsName")
+ private String dnsName;
+
+ /**
+ * The RdpAuthority property is a server DNS host name or IP address
+ * followed by the service port number for RDP (Remote Desktop Protocol).
+ */
+ @JsonProperty(value = "rdpAuthority")
+ private String rdpAuthority;
+
+ /**
+ * The SshAuthority property is a server DNS host name or IP address
+ * followed by the service port number for SSH.
+ */
+ @JsonProperty(value = "sshAuthority")
+ private String sshAuthority;
+
+ /**
+ * The configuration for sharing a public IP address across multiple
+ * virtual machines.
+ */
+ @JsonProperty(value = "sharedPublicIpAddressConfiguration")
+ private SharedPublicIpAddressConfiguration sharedPublicIpAddressConfiguration;
+
+ /**
+ * Get the resource ID of the virtual network.
+ *
+ * @return the virtualNetworkId value
+ */
+ public String virtualNetworkId() {
+ return this.virtualNetworkId;
+ }
+
+ /**
+ * Set the resource ID of the virtual network.
+ *
+ * @param virtualNetworkId the virtualNetworkId value to set
+ * @return the NetworkInterfaceProperties object itself.
+ */
+ public NetworkInterfaceProperties withVirtualNetworkId(String virtualNetworkId) {
+ this.virtualNetworkId = virtualNetworkId;
+ return this;
+ }
+
+ /**
+ * Get the resource ID of the sub net.
+ *
+ * @return the subnetId value
+ */
+ public String subnetId() {
+ return this.subnetId;
+ }
+
+ /**
+ * Set the resource ID of the sub net.
+ *
+ * @param subnetId the subnetId value to set
+ * @return the NetworkInterfaceProperties object itself.
+ */
+ public NetworkInterfaceProperties withSubnetId(String subnetId) {
+ this.subnetId = subnetId;
+ return this;
+ }
+
+ /**
+ * Get the resource ID of the public IP address.
+ *
+ * @return the publicIpAddressId value
+ */
+ public String publicIpAddressId() {
+ return this.publicIpAddressId;
+ }
+
+ /**
+ * Set the resource ID of the public IP address.
+ *
+ * @param publicIpAddressId the publicIpAddressId value to set
+ * @return the NetworkInterfaceProperties object itself.
+ */
+ public NetworkInterfaceProperties withPublicIpAddressId(String publicIpAddressId) {
+ this.publicIpAddressId = publicIpAddressId;
+ return this;
+ }
+
+ /**
+ * Get the public IP address.
+ *
+ * @return the publicIpAddress value
+ */
+ public String publicIpAddress() {
+ return this.publicIpAddress;
+ }
+
+ /**
+ * Set the public IP address.
+ *
+ * @param publicIpAddress the publicIpAddress value to set
+ * @return the NetworkInterfaceProperties object itself.
+ */
+ public NetworkInterfaceProperties withPublicIpAddress(String publicIpAddress) {
+ this.publicIpAddress = publicIpAddress;
+ return this;
+ }
+
+ /**
+ * Get the private IP address.
+ *
+ * @return the privateIpAddress value
+ */
+ public String privateIpAddress() {
+ return this.privateIpAddress;
+ }
+
+ /**
+ * Set the private IP address.
+ *
+ * @param privateIpAddress the privateIpAddress value to set
+ * @return the NetworkInterfaceProperties object itself.
+ */
+ public NetworkInterfaceProperties withPrivateIpAddress(String privateIpAddress) {
+ this.privateIpAddress = privateIpAddress;
+ return this;
+ }
+
+ /**
+ * Get the DNS name.
+ *
+ * @return the dnsName value
+ */
+ public String dnsName() {
+ return this.dnsName;
+ }
+
+ /**
+ * Set the DNS name.
+ *
+ * @param dnsName the dnsName value to set
+ * @return the NetworkInterfaceProperties object itself.
+ */
+ public NetworkInterfaceProperties withDnsName(String dnsName) {
+ this.dnsName = dnsName;
+ return this;
+ }
+
+ /**
+ * Get the RdpAuthority property is a server DNS host name or IP address followed by the service port number for RDP (Remote Desktop Protocol).
+ *
+ * @return the rdpAuthority value
+ */
+ public String rdpAuthority() {
+ return this.rdpAuthority;
+ }
+
+ /**
+ * Set the RdpAuthority property is a server DNS host name or IP address followed by the service port number for RDP (Remote Desktop Protocol).
+ *
+ * @param rdpAuthority the rdpAuthority value to set
+ * @return the NetworkInterfaceProperties object itself.
+ */
+ public NetworkInterfaceProperties withRdpAuthority(String rdpAuthority) {
+ this.rdpAuthority = rdpAuthority;
+ return this;
+ }
+
+ /**
+ * Get the SshAuthority property is a server DNS host name or IP address followed by the service port number for SSH.
+ *
+ * @return the sshAuthority value
+ */
+ public String sshAuthority() {
+ return this.sshAuthority;
+ }
+
+ /**
+ * Set the SshAuthority property is a server DNS host name or IP address followed by the service port number for SSH.
+ *
+ * @param sshAuthority the sshAuthority value to set
+ * @return the NetworkInterfaceProperties object itself.
+ */
+ public NetworkInterfaceProperties withSshAuthority(String sshAuthority) {
+ this.sshAuthority = sshAuthority;
+ return this;
+ }
+
+ /**
+ * Get the configuration for sharing a public IP address across multiple virtual machines.
+ *
+ * @return the sharedPublicIpAddressConfiguration value
+ */
+ public SharedPublicIpAddressConfiguration sharedPublicIpAddressConfiguration() {
+ return this.sharedPublicIpAddressConfiguration;
+ }
+
+ /**
+ * Set the configuration for sharing a public IP address across multiple virtual machines.
+ *
+ * @param sharedPublicIpAddressConfiguration the sharedPublicIpAddressConfiguration value to set
+ * @return the NetworkInterfaceProperties object itself.
+ */
+ public NetworkInterfaceProperties withSharedPublicIpAddressConfiguration(SharedPublicIpAddressConfiguration sharedPublicIpAddressConfiguration) {
+ this.sharedPublicIpAddressConfiguration = sharedPublicIpAddressConfiguration;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NetworkInterfacePropertiesFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NetworkInterfacePropertiesFragment.java
new file mode 100644
index 000000000000..e1d74bbe9d6c
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NetworkInterfacePropertiesFragment.java
@@ -0,0 +1,254 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of a network interface.
+ */
+public class NetworkInterfacePropertiesFragment {
+ /**
+ * The resource ID of the virtual network.
+ */
+ @JsonProperty(value = "virtualNetworkId")
+ private String virtualNetworkId;
+
+ /**
+ * The resource ID of the sub net.
+ */
+ @JsonProperty(value = "subnetId")
+ private String subnetId;
+
+ /**
+ * The resource ID of the public IP address.
+ */
+ @JsonProperty(value = "publicIpAddressId")
+ private String publicIpAddressId;
+
+ /**
+ * The public IP address.
+ */
+ @JsonProperty(value = "publicIpAddress")
+ private String publicIpAddress;
+
+ /**
+ * The private IP address.
+ */
+ @JsonProperty(value = "privateIpAddress")
+ private String privateIpAddress;
+
+ /**
+ * The DNS name.
+ */
+ @JsonProperty(value = "dnsName")
+ private String dnsName;
+
+ /**
+ * The RdpAuthority property is a server DNS host name or IP address
+ * followed by the service port number for RDP (Remote Desktop Protocol).
+ */
+ @JsonProperty(value = "rdpAuthority")
+ private String rdpAuthority;
+
+ /**
+ * The SshAuthority property is a server DNS host name or IP address
+ * followed by the service port number for SSH.
+ */
+ @JsonProperty(value = "sshAuthority")
+ private String sshAuthority;
+
+ /**
+ * The configuration for sharing a public IP address across multiple
+ * virtual machines.
+ */
+ @JsonProperty(value = "sharedPublicIpAddressConfiguration")
+ private SharedPublicIpAddressConfigurationFragment sharedPublicIpAddressConfiguration;
+
+ /**
+ * Get the resource ID of the virtual network.
+ *
+ * @return the virtualNetworkId value
+ */
+ public String virtualNetworkId() {
+ return this.virtualNetworkId;
+ }
+
+ /**
+ * Set the resource ID of the virtual network.
+ *
+ * @param virtualNetworkId the virtualNetworkId value to set
+ * @return the NetworkInterfacePropertiesFragment object itself.
+ */
+ public NetworkInterfacePropertiesFragment withVirtualNetworkId(String virtualNetworkId) {
+ this.virtualNetworkId = virtualNetworkId;
+ return this;
+ }
+
+ /**
+ * Get the resource ID of the sub net.
+ *
+ * @return the subnetId value
+ */
+ public String subnetId() {
+ return this.subnetId;
+ }
+
+ /**
+ * Set the resource ID of the sub net.
+ *
+ * @param subnetId the subnetId value to set
+ * @return the NetworkInterfacePropertiesFragment object itself.
+ */
+ public NetworkInterfacePropertiesFragment withSubnetId(String subnetId) {
+ this.subnetId = subnetId;
+ return this;
+ }
+
+ /**
+ * Get the resource ID of the public IP address.
+ *
+ * @return the publicIpAddressId value
+ */
+ public String publicIpAddressId() {
+ return this.publicIpAddressId;
+ }
+
+ /**
+ * Set the resource ID of the public IP address.
+ *
+ * @param publicIpAddressId the publicIpAddressId value to set
+ * @return the NetworkInterfacePropertiesFragment object itself.
+ */
+ public NetworkInterfacePropertiesFragment withPublicIpAddressId(String publicIpAddressId) {
+ this.publicIpAddressId = publicIpAddressId;
+ return this;
+ }
+
+ /**
+ * Get the public IP address.
+ *
+ * @return the publicIpAddress value
+ */
+ public String publicIpAddress() {
+ return this.publicIpAddress;
+ }
+
+ /**
+ * Set the public IP address.
+ *
+ * @param publicIpAddress the publicIpAddress value to set
+ * @return the NetworkInterfacePropertiesFragment object itself.
+ */
+ public NetworkInterfacePropertiesFragment withPublicIpAddress(String publicIpAddress) {
+ this.publicIpAddress = publicIpAddress;
+ return this;
+ }
+
+ /**
+ * Get the private IP address.
+ *
+ * @return the privateIpAddress value
+ */
+ public String privateIpAddress() {
+ return this.privateIpAddress;
+ }
+
+ /**
+ * Set the private IP address.
+ *
+ * @param privateIpAddress the privateIpAddress value to set
+ * @return the NetworkInterfacePropertiesFragment object itself.
+ */
+ public NetworkInterfacePropertiesFragment withPrivateIpAddress(String privateIpAddress) {
+ this.privateIpAddress = privateIpAddress;
+ return this;
+ }
+
+ /**
+ * Get the DNS name.
+ *
+ * @return the dnsName value
+ */
+ public String dnsName() {
+ return this.dnsName;
+ }
+
+ /**
+ * Set the DNS name.
+ *
+ * @param dnsName the dnsName value to set
+ * @return the NetworkInterfacePropertiesFragment object itself.
+ */
+ public NetworkInterfacePropertiesFragment withDnsName(String dnsName) {
+ this.dnsName = dnsName;
+ return this;
+ }
+
+ /**
+ * Get the RdpAuthority property is a server DNS host name or IP address followed by the service port number for RDP (Remote Desktop Protocol).
+ *
+ * @return the rdpAuthority value
+ */
+ public String rdpAuthority() {
+ return this.rdpAuthority;
+ }
+
+ /**
+ * Set the RdpAuthority property is a server DNS host name or IP address followed by the service port number for RDP (Remote Desktop Protocol).
+ *
+ * @param rdpAuthority the rdpAuthority value to set
+ * @return the NetworkInterfacePropertiesFragment object itself.
+ */
+ public NetworkInterfacePropertiesFragment withRdpAuthority(String rdpAuthority) {
+ this.rdpAuthority = rdpAuthority;
+ return this;
+ }
+
+ /**
+ * Get the SshAuthority property is a server DNS host name or IP address followed by the service port number for SSH.
+ *
+ * @return the sshAuthority value
+ */
+ public String sshAuthority() {
+ return this.sshAuthority;
+ }
+
+ /**
+ * Set the SshAuthority property is a server DNS host name or IP address followed by the service port number for SSH.
+ *
+ * @param sshAuthority the sshAuthority value to set
+ * @return the NetworkInterfacePropertiesFragment object itself.
+ */
+ public NetworkInterfacePropertiesFragment withSshAuthority(String sshAuthority) {
+ this.sshAuthority = sshAuthority;
+ return this;
+ }
+
+ /**
+ * Get the configuration for sharing a public IP address across multiple virtual machines.
+ *
+ * @return the sharedPublicIpAddressConfiguration value
+ */
+ public SharedPublicIpAddressConfigurationFragment sharedPublicIpAddressConfiguration() {
+ return this.sharedPublicIpAddressConfiguration;
+ }
+
+ /**
+ * Set the configuration for sharing a public IP address across multiple virtual machines.
+ *
+ * @param sharedPublicIpAddressConfiguration the sharedPublicIpAddressConfiguration value to set
+ * @return the NetworkInterfacePropertiesFragment object itself.
+ */
+ public NetworkInterfacePropertiesFragment withSharedPublicIpAddressConfiguration(SharedPublicIpAddressConfigurationFragment sharedPublicIpAddressConfiguration) {
+ this.sharedPublicIpAddressConfiguration = sharedPublicIpAddressConfiguration;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannel.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannel.java
new file mode 100644
index 000000000000..411eb2f7f1a5
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannel.java
@@ -0,0 +1,299 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.NotificationChannelInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import java.util.Map;
+import java.util.List;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing NotificationChannel.
+ */
+public interface NotificationChannel extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the createdDate value.
+ */
+ DateTime createdDate();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the events value.
+ */
+ List events();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the uniqueIdentifier value.
+ */
+ String uniqueIdentifier();
+
+ /**
+ * @return the webHookUrl value.
+ */
+ String webHookUrl();
+
+ /**
+ * The entirety of the NotificationChannel definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of NotificationChannel definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a NotificationChannel definition.
+ */
+ interface Blank extends WithLab {
+ }
+
+ /**
+ * The stage of the notificationchannel definition allowing to specify Lab.
+ */
+ interface WithLab {
+ /**
+ * Specifies resourceGroupName, labName.
+ * @param resourceGroupName The name of the resource group
+ * @param labName The name of the lab
+ * @return the next definition stage
+ */
+ WithCreate withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the notificationchannel definition allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description Description of notification
+ * @return the next definition stage
+ */
+ WithCreate withDescription(String description);
+ }
+
+ /**
+ * The stage of the notificationchannel definition allowing to specify Events.
+ */
+ interface WithEvents {
+ /**
+ * Specifies events.
+ * @param events The list of event for which this notification is enabled
+ * @return the next definition stage
+ */
+ WithCreate withEvents(List events);
+ }
+
+ /**
+ * The stage of the notificationchannel definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the notificationchannel definition allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next definition stage
+ */
+ WithCreate withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the notificationchannel definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the notificationchannel definition allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next definition stage
+ */
+ WithCreate withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the notificationchannel definition allowing to specify WebHookUrl.
+ */
+ interface WithWebHookUrl {
+ /**
+ * Specifies webHookUrl.
+ * @param webHookUrl The webhook URL to send notifications to
+ * @return the next definition stage
+ */
+ WithCreate withWebHookUrl(String webHookUrl);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, DefinitionStages.WithDescription, DefinitionStages.WithEvents, DefinitionStages.WithLocation, DefinitionStages.WithProvisioningState, DefinitionStages.WithTags, DefinitionStages.WithUniqueIdentifier, DefinitionStages.WithWebHookUrl {
+ }
+ }
+ /**
+ * The template for a NotificationChannel update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithDescription, UpdateStages.WithEvents, UpdateStages.WithLocation, UpdateStages.WithProvisioningState, UpdateStages.WithTags, UpdateStages.WithUniqueIdentifier, UpdateStages.WithWebHookUrl {
+ }
+
+ /**
+ * Grouping of NotificationChannel update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the notificationchannel update allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description Description of notification
+ * @return the next update stage
+ */
+ Update withDescription(String description);
+ }
+
+ /**
+ * The stage of the notificationchannel update allowing to specify Events.
+ */
+ interface WithEvents {
+ /**
+ * Specifies events.
+ * @param events The list of event for which this notification is enabled
+ * @return the next update stage
+ */
+ Update withEvents(List events);
+ }
+
+ /**
+ * The stage of the notificationchannel update allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location The location of the resource
+ * @return the next update stage
+ */
+ Update withLocation(String location);
+ }
+
+ /**
+ * The stage of the notificationchannel update allowing to specify ProvisioningState.
+ */
+ interface WithProvisioningState {
+ /**
+ * Specifies provisioningState.
+ * @param provisioningState The provisioning status of the resource
+ * @return the next update stage
+ */
+ Update withProvisioningState(String provisioningState);
+ }
+
+ /**
+ * The stage of the notificationchannel update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags The tags of the resource
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the notificationchannel update allowing to specify UniqueIdentifier.
+ */
+ interface WithUniqueIdentifier {
+ /**
+ * Specifies uniqueIdentifier.
+ * @param uniqueIdentifier The unique immutable identifier of a resource (Guid)
+ * @return the next update stage
+ */
+ Update withUniqueIdentifier(String uniqueIdentifier);
+ }
+
+ /**
+ * The stage of the notificationchannel update allowing to specify WebHookUrl.
+ */
+ interface WithWebHookUrl {
+ /**
+ * Specifies webHookUrl.
+ * @param webHookUrl The webhook URL to send notifications to
+ * @return the next update stage
+ */
+ Update withWebHookUrl(String webHookUrl);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannelEventType.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannelEventType.java
new file mode 100644
index 000000000000..8d9baf51644c
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannelEventType.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for NotificationChannelEventType.
+ */
+public final class NotificationChannelEventType extends ExpandableStringEnum {
+ /** Static value AutoShutdown for NotificationChannelEventType. */
+ public static final NotificationChannelEventType AUTO_SHUTDOWN = fromString("AutoShutdown");
+
+ /** Static value Cost for NotificationChannelEventType. */
+ public static final NotificationChannelEventType COST = fromString("Cost");
+
+ /**
+ * Creates or finds a NotificationChannelEventType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding NotificationChannelEventType
+ */
+ @JsonCreator
+ public static NotificationChannelEventType fromString(String name) {
+ return fromString(name, NotificationChannelEventType.class);
+ }
+
+ /**
+ * @return known NotificationChannelEventType values
+ */
+ public static Collection values() {
+ return values(NotificationChannelEventType.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannelFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannelFragment.java
new file mode 100644
index 000000000000..aa31bd9ccf07
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannelFragment.java
@@ -0,0 +1,153 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.rest.SkipParentValidation;
+import com.microsoft.azure.Resource;
+
+/**
+ * A notification.
+ */
+@JsonFlatten
+@SkipParentValidation
+public class NotificationChannelFragment extends Resource {
+ /**
+ * The webhook URL to send notifications to.
+ */
+ @JsonProperty(value = "properties.webHookUrl")
+ private String webHookUrl;
+
+ /**
+ * Description of notification.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /**
+ * The list of event for which this notification is enabled.
+ */
+ @JsonProperty(value = "properties.events")
+ private List events;
+
+ /**
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState")
+ private String provisioningState;
+
+ /**
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier")
+ private String uniqueIdentifier;
+
+ /**
+ * Get the webhook URL to send notifications to.
+ *
+ * @return the webHookUrl value
+ */
+ public String webHookUrl() {
+ return this.webHookUrl;
+ }
+
+ /**
+ * Set the webhook URL to send notifications to.
+ *
+ * @param webHookUrl the webHookUrl value to set
+ * @return the NotificationChannelFragment object itself.
+ */
+ public NotificationChannelFragment withWebHookUrl(String webHookUrl) {
+ this.webHookUrl = webHookUrl;
+ return this;
+ }
+
+ /**
+ * Get description of notification.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set description of notification.
+ *
+ * @param description the description value to set
+ * @return the NotificationChannelFragment object itself.
+ */
+ public NotificationChannelFragment withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get the list of event for which this notification is enabled.
+ *
+ * @return the events value
+ */
+ public List events() {
+ return this.events;
+ }
+
+ /**
+ * Set the list of event for which this notification is enabled.
+ *
+ * @param events the events value to set
+ * @return the NotificationChannelFragment object itself.
+ */
+ public NotificationChannelFragment withEvents(List events) {
+ this.events = events;
+ return this;
+ }
+
+ /**
+ * Get the provisioning status of the resource.
+ *
+ * @return the provisioningState value
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Set the provisioning status of the resource.
+ *
+ * @param provisioningState the provisioningState value to set
+ * @return the NotificationChannelFragment object itself.
+ */
+ public NotificationChannelFragment withProvisioningState(String provisioningState) {
+ this.provisioningState = provisioningState;
+ return this;
+ }
+
+ /**
+ * Get the unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /**
+ * Set the unique immutable identifier of a resource (Guid).
+ *
+ * @param uniqueIdentifier the uniqueIdentifier value to set
+ * @return the NotificationChannelFragment object itself.
+ */
+ public NotificationChannelFragment withUniqueIdentifier(String uniqueIdentifier) {
+ this.uniqueIdentifier = uniqueIdentifier;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannels.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannels.java
new file mode 100644
index 000000000000..36f2d87d50e4
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationChannels.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.NotificationChannelsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing NotificationChannels.
+ */
+public interface NotificationChannels extends SupportsCreating, HasInner {
+ /**
+ * Send notification to provided channel.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notificationChannel.
+ * @param notifyParameters Properties for generating a Notification.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable notifyAsync(String resourceGroupName, String labName, String name, NotifyParameters notifyParameters);
+
+ /**
+ * Get notification channels.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notificationChannel.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List notification channels in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String labName);
+
+ /**
+ * Delete notification channel.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notificationChannel.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationSettings.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationSettings.java
new file mode 100644
index 000000000000..866e13f810ed
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationSettings.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Notification settings for a schedule.
+ */
+public class NotificationSettings {
+ /**
+ * If notifications are enabled for this schedule (i.e. Enabled, Disabled).
+ * Possible values include: 'Disabled', 'Enabled'.
+ */
+ @JsonProperty(value = "status")
+ private NotificationStatus status;
+
+ /**
+ * Time in minutes before event at which notification will be sent.
+ */
+ @JsonProperty(value = "timeInMinutes")
+ private Integer timeInMinutes;
+
+ /**
+ * The webhook URL to which the notification will be sent.
+ */
+ @JsonProperty(value = "webhookUrl")
+ private String webhookUrl;
+
+ /**
+ * Get if notifications are enabled for this schedule (i.e. Enabled, Disabled). Possible values include: 'Disabled', 'Enabled'.
+ *
+ * @return the status value
+ */
+ public NotificationStatus status() {
+ return this.status;
+ }
+
+ /**
+ * Set if notifications are enabled for this schedule (i.e. Enabled, Disabled). Possible values include: 'Disabled', 'Enabled'.
+ *
+ * @param status the status value to set
+ * @return the NotificationSettings object itself.
+ */
+ public NotificationSettings withStatus(NotificationStatus status) {
+ this.status = status;
+ return this;
+ }
+
+ /**
+ * Get time in minutes before event at which notification will be sent.
+ *
+ * @return the timeInMinutes value
+ */
+ public Integer timeInMinutes() {
+ return this.timeInMinutes;
+ }
+
+ /**
+ * Set time in minutes before event at which notification will be sent.
+ *
+ * @param timeInMinutes the timeInMinutes value to set
+ * @return the NotificationSettings object itself.
+ */
+ public NotificationSettings withTimeInMinutes(Integer timeInMinutes) {
+ this.timeInMinutes = timeInMinutes;
+ return this;
+ }
+
+ /**
+ * Get the webhook URL to which the notification will be sent.
+ *
+ * @return the webhookUrl value
+ */
+ public String webhookUrl() {
+ return this.webhookUrl;
+ }
+
+ /**
+ * Set the webhook URL to which the notification will be sent.
+ *
+ * @param webhookUrl the webhookUrl value to set
+ * @return the NotificationSettings object itself.
+ */
+ public NotificationSettings withWebhookUrl(String webhookUrl) {
+ this.webhookUrl = webhookUrl;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationSettingsFragment.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationSettingsFragment.java
new file mode 100644
index 000000000000..ef34b0d3886d
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationSettingsFragment.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Notification settings for a schedule.
+ */
+public class NotificationSettingsFragment {
+ /**
+ * If notifications are enabled for this schedule (i.e. Enabled, Disabled).
+ * Possible values include: 'Disabled', 'Enabled'.
+ */
+ @JsonProperty(value = "status")
+ private NotificationStatus status;
+
+ /**
+ * Time in minutes before event at which notification will be sent.
+ */
+ @JsonProperty(value = "timeInMinutes")
+ private Integer timeInMinutes;
+
+ /**
+ * The webhook URL to which the notification will be sent.
+ */
+ @JsonProperty(value = "webhookUrl")
+ private String webhookUrl;
+
+ /**
+ * Get if notifications are enabled for this schedule (i.e. Enabled, Disabled). Possible values include: 'Disabled', 'Enabled'.
+ *
+ * @return the status value
+ */
+ public NotificationStatus status() {
+ return this.status;
+ }
+
+ /**
+ * Set if notifications are enabled for this schedule (i.e. Enabled, Disabled). Possible values include: 'Disabled', 'Enabled'.
+ *
+ * @param status the status value to set
+ * @return the NotificationSettingsFragment object itself.
+ */
+ public NotificationSettingsFragment withStatus(NotificationStatus status) {
+ this.status = status;
+ return this;
+ }
+
+ /**
+ * Get time in minutes before event at which notification will be sent.
+ *
+ * @return the timeInMinutes value
+ */
+ public Integer timeInMinutes() {
+ return this.timeInMinutes;
+ }
+
+ /**
+ * Set time in minutes before event at which notification will be sent.
+ *
+ * @param timeInMinutes the timeInMinutes value to set
+ * @return the NotificationSettingsFragment object itself.
+ */
+ public NotificationSettingsFragment withTimeInMinutes(Integer timeInMinutes) {
+ this.timeInMinutes = timeInMinutes;
+ return this;
+ }
+
+ /**
+ * Get the webhook URL to which the notification will be sent.
+ *
+ * @return the webhookUrl value
+ */
+ public String webhookUrl() {
+ return this.webhookUrl;
+ }
+
+ /**
+ * Set the webhook URL to which the notification will be sent.
+ *
+ * @param webhookUrl the webhookUrl value to set
+ * @return the NotificationSettingsFragment object itself.
+ */
+ public NotificationSettingsFragment withWebhookUrl(String webhookUrl) {
+ this.webhookUrl = webhookUrl;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationStatus.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationStatus.java
new file mode 100644
index 000000000000..1671e22da4fe
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotificationStatus.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for NotificationStatus.
+ */
+public final class NotificationStatus extends ExpandableStringEnum {
+ /** Static value Disabled for NotificationStatus. */
+ public static final NotificationStatus DISABLED = fromString("Disabled");
+
+ /** Static value Enabled for NotificationStatus. */
+ public static final NotificationStatus ENABLED = fromString("Enabled");
+
+ /**
+ * Creates or finds a NotificationStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding NotificationStatus
+ */
+ @JsonCreator
+ public static NotificationStatus fromString(String name) {
+ return fromString(name, NotificationStatus.class);
+ }
+
+ /**
+ * @return known NotificationStatus values
+ */
+ public static Collection values() {
+ return values(NotificationStatus.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotifyParameters.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotifyParameters.java
new file mode 100644
index 000000000000..8e1b72b1edc4
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/NotifyParameters.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties for generating a Notification.
+ */
+public class NotifyParameters {
+ /**
+ * The type of event (i.e. AutoShutdown, Cost). Possible values include:
+ * 'AutoShutdown', 'Cost'.
+ */
+ @JsonProperty(value = "eventName")
+ private NotificationChannelEventType eventName;
+
+ /**
+ * Properties for the notification in json format.
+ */
+ @JsonProperty(value = "jsonPayload")
+ private String jsonPayload;
+
+ /**
+ * Get the type of event (i.e. AutoShutdown, Cost). Possible values include: 'AutoShutdown', 'Cost'.
+ *
+ * @return the eventName value
+ */
+ public NotificationChannelEventType eventName() {
+ return this.eventName;
+ }
+
+ /**
+ * Set the type of event (i.e. AutoShutdown, Cost). Possible values include: 'AutoShutdown', 'Cost'.
+ *
+ * @param eventName the eventName value to set
+ * @return the NotifyParameters object itself.
+ */
+ public NotifyParameters withEventName(NotificationChannelEventType eventName) {
+ this.eventName = eventName;
+ return this;
+ }
+
+ /**
+ * Get properties for the notification in json format.
+ *
+ * @return the jsonPayload value
+ */
+ public String jsonPayload() {
+ return this.jsonPayload;
+ }
+
+ /**
+ * Set properties for the notification in json format.
+ *
+ * @param jsonPayload the jsonPayload value to set
+ * @return the NotifyParameters object itself.
+ */
+ public NotifyParameters withJsonPayload(String jsonPayload) {
+ this.jsonPayload = jsonPayload;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationError.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationError.java
new file mode 100644
index 000000000000..40242c9d46d5
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationError.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Error details for the operation in case of a failure.
+ */
+public class OperationError {
+ /**
+ * The error code of the operation error.
+ */
+ @JsonProperty(value = "code")
+ private String code;
+
+ /**
+ * The error message of the operation error.
+ */
+ @JsonProperty(value = "message")
+ private String message;
+
+ /**
+ * Get the error code of the operation error.
+ *
+ * @return the code value
+ */
+ public String code() {
+ return this.code;
+ }
+
+ /**
+ * Set the error code of the operation error.
+ *
+ * @param code the code value to set
+ * @return the OperationError object itself.
+ */
+ public OperationError withCode(String code) {
+ this.code = code;
+ return this;
+ }
+
+ /**
+ * Get the error message of the operation error.
+ *
+ * @return the message value
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Set the error message of the operation error.
+ *
+ * @param message the message value to set
+ * @return the OperationError object itself.
+ */
+ public OperationError withMessage(String message) {
+ this.message = message;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationMetadata.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationMetadata.java
new file mode 100644
index 000000000000..53e743da0d52
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationMetadata.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.OperationMetadataInner;
+
+/**
+ * Type representing OperationMetadata.
+ */
+public interface OperationMetadata extends HasInner, HasManager {
+ /**
+ * @return the display value.
+ */
+ OperationMetadataDisplay display();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationMetadataDisplay.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationMetadataDisplay.java
new file mode 100644
index 000000000000..ebc1ec921f78
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationMetadataDisplay.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The object that describes the operations.
+ */
+public class OperationMetadataDisplay {
+ /**
+ * Friendly name of the resource provider.
+ */
+ @JsonProperty(value = "provider")
+ private String provider;
+
+ /**
+ * Resource type on which the operation is performed.
+ */
+ @JsonProperty(value = "resource")
+ private String resource;
+
+ /**
+ * Operation type: read, write, delete, listKeys/action, etc.
+ */
+ @JsonProperty(value = "operation")
+ private String operation;
+
+ /**
+ * Friendly name of the operation.
+ */
+ @JsonProperty(value = "description")
+ private String description;
+
+ /**
+ * Get friendly name of the resource provider.
+ *
+ * @return the provider value
+ */
+ public String provider() {
+ return this.provider;
+ }
+
+ /**
+ * Set friendly name of the resource provider.
+ *
+ * @param provider the provider value to set
+ * @return the OperationMetadataDisplay object itself.
+ */
+ public OperationMetadataDisplay withProvider(String provider) {
+ this.provider = provider;
+ return this;
+ }
+
+ /**
+ * Get resource type on which the operation is performed.
+ *
+ * @return the resource value
+ */
+ public String resource() {
+ return this.resource;
+ }
+
+ /**
+ * Set resource type on which the operation is performed.
+ *
+ * @param resource the resource value to set
+ * @return the OperationMetadataDisplay object itself.
+ */
+ public OperationMetadataDisplay withResource(String resource) {
+ this.resource = resource;
+ return this;
+ }
+
+ /**
+ * Get operation type: read, write, delete, listKeys/action, etc.
+ *
+ * @return the operation value
+ */
+ public String operation() {
+ return this.operation;
+ }
+
+ /**
+ * Set operation type: read, write, delete, listKeys/action, etc.
+ *
+ * @param operation the operation value to set
+ * @return the OperationMetadataDisplay object itself.
+ */
+ public OperationMetadataDisplay withOperation(String operation) {
+ this.operation = operation;
+ return this;
+ }
+
+ /**
+ * Get friendly name of the operation.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set friendly name of the operation.
+ *
+ * @param description the description value to set
+ * @return the OperationMetadataDisplay object itself.
+ */
+ public OperationMetadataDisplay withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationResult.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationResult.java
new file mode 100644
index 000000000000..99126203a227
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/OperationResult.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.OperationResultInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+
+/**
+ * Type representing OperationResult.
+ */
+public interface OperationResult extends HasInner, HasManager {
+ /**
+ * @return the error value.
+ */
+ OperationError error();
+
+ /**
+ * @return the status value.
+ */
+ String status();
+
+ /**
+ * @return the statusCode value.
+ */
+ HttpStatusCode statusCode();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Operations.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Operations.java
new file mode 100644
index 000000000000..9c0955394062
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Operations.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.OperationsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Operations.
+ */
+public interface Operations extends HasInner {
+ /**
+ * Get operation.
+ *
+ * @param locationName The name of the location.
+ * @param name The name of the operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String locationName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ParameterInfo.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ParameterInfo.java
new file mode 100644
index 000000000000..5e9e709ce421
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ParameterInfo.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Information about an artifact's parameter.
+ */
+public class ParameterInfo {
+ /**
+ * The name of the artifact parameter.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * The value of the artifact parameter.
+ */
+ @JsonProperty(value = "value")
+ private String value;
+
+ /**
+ * Get the name of the artifact parameter.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the artifact parameter.
+ *
+ * @param name the name value to set
+ * @return the ParameterInfo object itself.
+ */
+ public ParameterInfo withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the value of the artifact parameter.
+ *
+ * @return the value value
+ */
+ public String value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value of the artifact parameter.
+ *
+ * @param value the value value to set
+ * @return the ParameterInfo object itself.
+ */
+ public ParameterInfo withValue(String value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ParametersValueFileInfo.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ParametersValueFileInfo.java
new file mode 100644
index 000000000000..a09876122224
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/ParametersValueFileInfo.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A file containing a set of parameter values for an ARM template.
+ */
+public class ParametersValueFileInfo {
+ /**
+ * File name.
+ */
+ @JsonProperty(value = "fileName")
+ private String fileName;
+
+ /**
+ * Contents of the file.
+ */
+ @JsonProperty(value = "parametersValueInfo")
+ private Object parametersValueInfo;
+
+ /**
+ * Get file name.
+ *
+ * @return the fileName value
+ */
+ public String fileName() {
+ return this.fileName;
+ }
+
+ /**
+ * Set file name.
+ *
+ * @param fileName the fileName value to set
+ * @return the ParametersValueFileInfo object itself.
+ */
+ public ParametersValueFileInfo withFileName(String fileName) {
+ this.fileName = fileName;
+ return this;
+ }
+
+ /**
+ * Get contents of the file.
+ *
+ * @return the parametersValueInfo value
+ */
+ public Object parametersValueInfo() {
+ return this.parametersValueInfo;
+ }
+
+ /**
+ * Set contents of the file.
+ *
+ * @param parametersValueInfo the parametersValueInfo value to set
+ * @return the ParametersValueFileInfo object itself.
+ */
+ public ParametersValueFileInfo withParametersValueInfo(Object parametersValueInfo) {
+ this.parametersValueInfo = parametersValueInfo;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/PercentageCostThresholdProperties.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/PercentageCostThresholdProperties.java
new file mode 100644
index 000000000000..bbbf74a1a6c6
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/PercentageCostThresholdProperties.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of a percentage cost threshold.
+ */
+public class PercentageCostThresholdProperties {
+ /**
+ * The cost threshold value.
+ */
+ @JsonProperty(value = "thresholdValue")
+ private Double thresholdValue;
+
+ /**
+ * Get the cost threshold value.
+ *
+ * @return the thresholdValue value
+ */
+ public Double thresholdValue() {
+ return this.thresholdValue;
+ }
+
+ /**
+ * Set the cost threshold value.
+ *
+ * @param thresholdValue the thresholdValue value to set
+ * @return the PercentageCostThresholdProperties object itself.
+ */
+ public PercentageCostThresholdProperties withThresholdValue(Double thresholdValue) {
+ this.thresholdValue = thresholdValue;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Policies.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Policies.java
new file mode 100644
index 000000000000..8a3defccc605
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Policies.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.PoliciesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Policies.
+ */
+public interface Policies extends SupportsCreating, HasInner {
+ /**
+ * Get policy.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @param name The name of the policy.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String labName, String policySetName, String name);
+
+ /**
+ * List policies in a given policy set.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String labName, final String policySetName);
+
+ /**
+ * Delete policy.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @param name The name of the policy.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String labName, String policySetName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Policy.java b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Policy.java
new file mode 100644
index 000000000000..1e15caabc205
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2016_05_15/src/main/java/com/microsoft/azure/management/devtestlabs/v2016_05_15/Policy.java
@@ -0,0 +1,386 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.devtestlabs.v2016_05_15;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.PolicyInner;
+import com.microsoft.azure.arm.model.Indexable;
+import com.microsoft.azure.arm.model.Refreshable;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2016_05_15.implementation.DevTestLabsManager;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing Policy.
+ */
+public interface Policy extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the createdDate value.
+ */
+ DateTime createdDate();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the evaluatorType value.
+ */
+ PolicyEvaluatorType evaluatorType();
+
+ /**
+ * @return the factData value.
+ */
+ String factData();
+
+ /**
+ * @return the factName value.
+ */
+ PolicyFactName factName();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the location value.
+ */
+ String location();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the status value.
+ */
+ PolicyStatus status();
+
+ /**
+ * @return the tags value.
+ */
+ Map