diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/pom.xml b/sdk/devtestlabs/mgmt-v2015_05_21_preview/pom.xml
new file mode 100644
index 000000000000..12c0beb97359
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/pom.xml
@@ -0,0 +1,135 @@
+
+
+ 4.0.0
+ com.microsoft.azure.devtestlabs.v2015_05_21_preview
+
+ 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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ApplyArtifactsRequest.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ApplyArtifactsRequest.java
new file mode 100644
index 000000000000..9a42b5527465
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArmTemplateInfo.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArmTemplateInfo.java
new file mode 100644
index 000000000000..7b9571705f57
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.DevTestLabsManager;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Artifact.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Artifact.java
new file mode 100644
index 000000000000..7f1e3972416b
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Artifact.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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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.v2015_05_21_preview.implementation.DevTestLabsManager;
+import java.util.Map;
+
+/**
+ * Type representing Artifact.
+ */
+public interface Artifact extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @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 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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactDeploymentStatusProperties.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactDeploymentStatusProperties.java
new file mode 100644
index 000000000000..ff92dbaf26f1
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactInstallProperties.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactInstallProperties.java
new file mode 100644
index 000000000000..1dd57a61313d
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactInstallProperties.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.v2015_05_21_preview;
+
+import java.util.List;
+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;
+
+ /**
+ * 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;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactParameterProperties.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactParameterProperties.java
new file mode 100644
index 000000000000..81f42fe7d100
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactSource.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactSource.java
new file mode 100644
index 000000000000..d65622666a48
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactSource.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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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.v2015_05_21_preview.implementation.DevTestLabsManager;
+import java.util.Map;
+
+/**
+ * Type representing ArtifactSource.
+ */
+public interface ArtifactSource extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the branchRef value.
+ */
+ String branchRef();
+
+ /**
+ * @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 uri value.
+ */
+ String uri();
+
+ /**
+ * The entirety of the ArtifactSource definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithLocation, 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
+ */
+ WithLocation withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location the location parameter value
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify BranchRef.
+ */
+ interface WithBranchRef {
+ /**
+ * Specifies branchRef.
+ * @param branchRef The branch reference of the artifact source
+ * @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 display name of the artifact source
+ * @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 path of the artifact source
+ * @return the next definition stage
+ */
+ WithCreate withFolderPath(String folderPath);
+ }
+
+ /**
+ * 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 of 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 type of the artifact source. 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 The status of the artifact source. 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 parameter value
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the artifactsource definition allowing to specify Uri.
+ */
+ interface WithUri {
+ /**
+ * Specifies uri.
+ * @param uri The URI of the artifact source
+ * @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.WithBranchRef, DefinitionStages.WithDisplayName, DefinitionStages.WithFolderPath, DefinitionStages.WithProvisioningState, DefinitionStages.WithSecurityToken, DefinitionStages.WithSourceType, DefinitionStages.WithStatus, DefinitionStages.WithTags, DefinitionStages.WithUri {
+ }
+ }
+ /**
+ * The template for a ArtifactSource update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithBranchRef, UpdateStages.WithDisplayName, UpdateStages.WithFolderPath, UpdateStages.WithProvisioningState, UpdateStages.WithSecurityToken, UpdateStages.WithSourceType, UpdateStages.WithStatus, UpdateStages.WithTags, UpdateStages.WithUri {
+ }
+
+ /**
+ * Grouping of ArtifactSource update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the artifactsource update allowing to specify BranchRef.
+ */
+ interface WithBranchRef {
+ /**
+ * Specifies branchRef.
+ * @param branchRef The branch reference of the artifact source
+ * @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 display name of the artifact source
+ * @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 path of the artifact source
+ * @return the next update stage
+ */
+ Update withFolderPath(String folderPath);
+ }
+
+ /**
+ * 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 of 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 type of the artifact source. 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 The status of the artifact source. 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 parameter value
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the artifactsource update allowing to specify Uri.
+ */
+ interface WithUri {
+ /**
+ * Specifies uri.
+ * @param uri The URI of the artifact source
+ * @return the next update stage
+ */
+ Update withUri(String uri);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactSources.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ArtifactSources.java
new file mode 100644
index 000000000000..e339f425ace3
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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 getResourceAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List artifact sources.
+ *
+ * @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 deleteResourceAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Artifacts.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Artifacts.java
new file mode 100644
index 000000000000..887c490b2248
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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 the GenerateArmTemplateRequest value
+ * @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 getResourceAsync(String resourceGroupName, String labName, String artifactSourceName, String name);
+
+ /**
+ * List artifacts.
+ *
+ * @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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Cost.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Cost.java
new file mode 100644
index 000000000000..a868f9dfcd52
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Cost.java
@@ -0,0 +1,59 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.CostInner;
+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.v2015_05_21_preview.implementation.DevTestLabsManager;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Type representing Cost.
+ */
+public interface Cost extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the costs value.
+ */
+ List costs();
+
+ /**
+ * @return the currencyCode value.
+ */
+ String currencyCode();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostInsight.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostInsight.java
new file mode 100644
index 000000000000..3a90573ac25b
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostInsight.java
@@ -0,0 +1,64 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.CostInsightInner;
+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.v2015_05_21_preview.implementation.DevTestLabsManager;
+import java.util.Map;
+import java.util.List;
+
+/**
+ * Type representing CostInsight.
+ */
+public interface CostInsight extends HasInner, Indexable, Refreshable, HasManager {
+ /**
+ * @return the currencyCode value.
+ */
+ String currencyCode();
+
+ /**
+ * @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 vmCosts value.
+ */
+ List vmCosts();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostInsights.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostInsights.java
new file mode 100644
index 000000000000..864f74f3f33d
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostInsights.java
@@ -0,0 +1,52 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import rx.Observable;
+import rx.Completable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.CostInsightsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing CostInsights.
+ */
+public interface CostInsights extends HasInner {
+ /**
+ * Refresh Lab's Cost Insight Data. 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 cost insight.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable refreshDataAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get cost insight.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the cost insight.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getResourceAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List cost insights.
+ *
+ * @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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostPerDayProperties.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostPerDayProperties.java
new file mode 100644
index 000000000000..104f26c56dcf
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostPerDayProperties.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.v2015_05_21_preview;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The per-day properties of a cost item.
+ */
+public class CostPerDayProperties {
+ /**
+ * The date of the cost item.
+ */
+ @JsonProperty(value = "date")
+ private DateTime dateProperty;
+
+ /**
+ * The cost 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 CostPropertyType 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 CostPerDayProperties object itself.
+ */
+ public CostPerDayProperties withDateProperty(DateTime dateProperty) {
+ this.dateProperty = dateProperty;
+ return this;
+ }
+
+ /**
+ * Get the cost of the cost item.
+ *
+ * @return the cost value
+ */
+ public Double cost() {
+ return this.cost;
+ }
+
+ /**
+ * Set the cost of the cost item.
+ *
+ * @param cost the cost value to set
+ * @return the CostPerDayProperties object itself.
+ */
+ public CostPerDayProperties 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 CostPropertyType 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 CostPerDayProperties object itself.
+ */
+ public CostPerDayProperties withCostType(CostPropertyType costType) {
+ this.costType = costType;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostPropertyType.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostPropertyType.java
new file mode 100644
index 000000000000..07d6dc6f8dec
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CostPropertyType.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.v2015_05_21_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for CostPropertyType.
+ */
+public final class CostPropertyType extends ExpandableStringEnum {
+ /** Static value Unavailable for CostPropertyType. */
+ public static final CostPropertyType UNAVAILABLE = fromString("Unavailable");
+
+ /** Static value Reported for CostPropertyType. */
+ public static final CostPropertyType REPORTED = fromString("Reported");
+
+ /** Static value Projected for CostPropertyType. */
+ public static final CostPropertyType PROJECTED = fromString("Projected");
+
+ /**
+ * Creates or finds a CostPropertyType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding CostPropertyType
+ */
+ @JsonCreator
+ public static CostPropertyType fromString(String name) {
+ return fromString(name, CostPropertyType.class);
+ }
+
+ /**
+ * @return known CostPropertyType values
+ */
+ public static Collection values() {
+ return values(CostPropertyType.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Costs.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Costs.java
new file mode 100644
index 000000000000..50989f2cd601
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Costs.java
@@ -0,0 +1,52 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import rx.Observable;
+import rx.Completable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.CostsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Costs.
+ */
+public interface Costs extends HasInner {
+ /**
+ * Refresh Lab's Cost Data. 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 cost.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable refreshDataAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * 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 getResourceAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List costs.
+ *
+ * @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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImage.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImage.java
new file mode 100644
index 000000000000..d47293300c3a
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImage.java
@@ -0,0 +1,339 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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.v2015_05_21_preview.implementation.DevTestLabsManager;
+import org.joda.time.DateTime;
+import java.util.Map;
+
+/**
+ * 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 name value.
+ */
+ String name();
+
+ /**
+ * @return the osType value.
+ */
+ CustomImageOsType osType();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @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.WithLocation, 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
+ */
+ WithLocation withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the customimage definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location the location parameter value
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * 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 CreationDate.
+ */
+ interface WithCreationDate {
+ /**
+ * Specifies creationDate.
+ * @param creationDate The creation date of the custom image
+ * @return the next definition stage
+ */
+ WithCreate withCreationDate(DateTime creationDate);
+ }
+
+ /**
+ * 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 OsType.
+ */
+ interface WithOsType {
+ /**
+ * Specifies osType.
+ * @param osType The OS type of the custom image. Possible values include: 'Windows', 'Linux', 'None'
+ * @return the next definition stage
+ */
+ WithCreate withOsType(CustomImageOsType osType);
+ }
+
+ /**
+ * 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 parameter value
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * 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 vm parameter value
+ * @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.WithCreationDate, DefinitionStages.WithDescription, DefinitionStages.WithOsType, DefinitionStages.WithProvisioningState, DefinitionStages.WithTags, 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.WithCreationDate, UpdateStages.WithDescription, UpdateStages.WithOsType, UpdateStages.WithProvisioningState, UpdateStages.WithTags, 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 CreationDate.
+ */
+ interface WithCreationDate {
+ /**
+ * Specifies creationDate.
+ * @param creationDate The creation date of the custom image
+ * @return the next update stage
+ */
+ Update withCreationDate(DateTime creationDate);
+ }
+
+ /**
+ * 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 OsType.
+ */
+ interface WithOsType {
+ /**
+ * Specifies osType.
+ * @param osType The OS type of the custom image. Possible values include: 'Windows', 'Linux', 'None'
+ * @return the next update stage
+ */
+ Update withOsType(CustomImageOsType osType);
+ }
+
+ /**
+ * 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 parameter value
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * 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 vm parameter value
+ * @return the next update stage
+ */
+ Update withVm(CustomImagePropertiesFromVm vm);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImageOsType.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImageOsType.java
new file mode 100644
index 000000000000..018f94bbd314
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImagePropertiesCustom.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImagePropertiesCustom.java
new file mode 100644
index 000000000000..a45188d91d98
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImagePropertiesCustom.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.v2015_05_21_preview;
+
+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;
+
+ /**
+ * 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;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImagePropertiesFromVm.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImagePropertiesFromVm.java
new file mode 100644
index 000000000000..27ba91b57b65
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImagePropertiesFromVm.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.v2015_05_21_preview;
+
+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;
+
+ /**
+ * Indicates whether sysprep has been run on the VHD.
+ */
+ @JsonProperty(value = "sysPrep")
+ private Boolean sysPrep;
+
+ /**
+ * 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 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 CustomImagePropertiesFromVm object itself.
+ */
+ public CustomImagePropertiesFromVm withSysPrep(Boolean sysPrep) {
+ this.sysPrep = sysPrep;
+ 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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImages.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/CustomImages.java
new file mode 100644
index 000000000000..abb56ae5d52e
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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 getResourceAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List custom images.
+ *
+ * @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 deleteResourceAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/DayDetails.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/DayDetails.java
new file mode 100644
index 000000000000..583bade899fd
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of a daily schedule.
+ */
+public class DayDetails {
+ /**
+ * The time property.
+ */
+ @JsonProperty(value = "time")
+ private String time;
+
+ /**
+ * Get the time value.
+ *
+ * @return the time value
+ */
+ public String time() {
+ return this.time;
+ }
+
+ /**
+ * Set the time value.
+ *
+ * @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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/EnableStatus.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/EnableStatus.java
new file mode 100644
index 000000000000..5cd67281d168
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/EvaluatePoliciesProperties.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/EvaluatePoliciesProperties.java
new file mode 100644
index 000000000000..f3a05a0aa04e
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/EvaluatePoliciesRequest.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/EvaluatePoliciesRequest.java
new file mode 100644
index 000000000000..3d5506e5ea91
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/EvaluatePoliciesResponse.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/EvaluatePoliciesResponse.java
new file mode 100644
index 000000000000..6ea262aab960
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.DevTestLabsManager;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Formula.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Formula.java
new file mode 100644
index 000000000000..6ebb3fe3dbf8
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Formula.java
@@ -0,0 +1,340 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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.v2015_05_21_preview.implementation.DevTestLabsManager;
+import org.joda.time.DateTime;
+import java.util.Map;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.LabVirtualMachineInner;
+
+/**
+ * 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.
+ */
+ LabVirtualMachine 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 vm value.
+ */
+ FormulaPropertiesFromVm vm();
+
+ /**
+ * The entirety of the Formula definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithLocation, 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
+ */
+ WithLocation withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the formula definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location the location parameter value
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * 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 CreationDate.
+ */
+ interface WithCreationDate {
+ /**
+ * Specifies creationDate.
+ * @param creationDate The creation date of the formula
+ * @return the next definition stage
+ */
+ WithCreate withCreationDate(DateTime creationDate);
+ }
+
+ /**
+ * 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(LabVirtualMachineInner formulaContent);
+ }
+
+ /**
+ * 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 parameter value
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * 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.WithCreationDate, DefinitionStages.WithDescription, DefinitionStages.WithFormulaContent, DefinitionStages.WithOsType, DefinitionStages.WithProvisioningState, DefinitionStages.WithTags, DefinitionStages.WithVm {
+ }
+ }
+ /**
+ * The template for a Formula update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithAuthor, UpdateStages.WithCreationDate, UpdateStages.WithDescription, UpdateStages.WithFormulaContent, UpdateStages.WithOsType, UpdateStages.WithProvisioningState, UpdateStages.WithTags, 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 CreationDate.
+ */
+ interface WithCreationDate {
+ /**
+ * Specifies creationDate.
+ * @param creationDate The creation date of the formula
+ * @return the next update stage
+ */
+ Update withCreationDate(DateTime creationDate);
+ }
+
+ /**
+ * 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(LabVirtualMachineInner formulaContent);
+ }
+
+ /**
+ * 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 parameter value
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * 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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/FormulaPropertiesFromVm.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/FormulaPropertiesFromVm.java
new file mode 100644
index 000000000000..a693acfacc4c
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Formulas.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Formulas.java
new file mode 100644
index 000000000000..77deecda9760
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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 getResourceAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List formulas.
+ *
+ * @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 deleteResourceAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GalleryImage.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GalleryImage.java
new file mode 100644
index 000000000000..ca9df9f9ea85
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.GalleryImageInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GalleryImageReference.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GalleryImageReference.java
new file mode 100644
index 000000000000..2873bb014466
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GalleryImages.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GalleryImages.java
new file mode 100644
index 000000000000..ba213461ee83
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.GalleryImagesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing GalleryImages.
+ */
+public interface GalleryImages extends HasInner {
+ /**
+ * List gallery images.
+ *
+ * @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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GenerateArmTemplateRequest.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GenerateArmTemplateRequest.java
new file mode 100644
index 000000000000..710a7db33e02
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GenerateArmTemplateRequest.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.v2015_05_21_preview;
+
+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;
+
+ /**
+ * 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;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GenerateUploadUriParameter.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GenerateUploadUriParameter.java
new file mode 100644
index 000000000000..8aa2c714089c
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GenerateUploadUriResponse.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/GenerateUploadUriResponse.java
new file mode 100644
index 000000000000..dea57426d171
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.DevTestLabsManager;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.GenerateUploadUriResponseInner;
+
+/**
+ * Type representing GenerateUploadUriResponse.
+ */
+public interface GenerateUploadUriResponse extends HasInner, HasManager {
+ /**
+ * @return the uploadUri value.
+ */
+ String uploadUri();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/HourDetails.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/HourDetails.java
new file mode 100644
index 000000000000..eaa2087cdf90
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Lab.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Lab.java
new file mode 100644
index 000000000000..e141d313b099
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Lab.java
@@ -0,0 +1,302 @@
+/**
+ * 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.v2015_05_21_preview;
+
+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.v2015_05_21_preview.implementation.DevTestLabsManager;
+import java.util.List;
+import org.joda.time.DateTime;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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 defaultStorageAccount value.
+ */
+ String defaultStorageAccount();
+
+ /**
+ * @return the defaultVirtualNetworkId value.
+ */
+ String defaultVirtualNetworkId();
+
+ /**
+ * @return the labStorageType value.
+ */
+ LabStorageType labStorageType();
+
+ /**
+ * @return the provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the storageAccounts value.
+ */
+ List storageAccounts();
+
+ /**
+ * @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 ArtifactsStorageAccount.
+ */
+ interface WithArtifactsStorageAccount {
+ /**
+ * Specifies artifactsStorageAccount.
+ * @param artifactsStorageAccount The artifact storage account of the lab
+ * @return the next definition stage
+ */
+ WithCreate withArtifactsStorageAccount(String artifactsStorageAccount);
+ }
+
+ /**
+ * The stage of the lab definition allowing to specify CreatedDate.
+ */
+ interface WithCreatedDate {
+ /**
+ * Specifies createdDate.
+ * @param createdDate The creation date of the lab
+ * @return the next definition stage
+ */
+ WithCreate withCreatedDate(DateTime createdDate);
+ }
+
+ /**
+ * The stage of the lab definition allowing to specify DefaultStorageAccount.
+ */
+ interface WithDefaultStorageAccount {
+ /**
+ * Specifies defaultStorageAccount.
+ * @param defaultStorageAccount The lab's default storage account
+ * @return the next definition stage
+ */
+ WithCreate withDefaultStorageAccount(String defaultStorageAccount);
+ }
+
+ /**
+ * The stage of the lab definition allowing to specify DefaultVirtualNetworkId.
+ */
+ interface WithDefaultVirtualNetworkId {
+ /**
+ * Specifies defaultVirtualNetworkId.
+ * @param defaultVirtualNetworkId The default virtual network identifier of the lab
+ * @return the next definition stage
+ */
+ WithCreate withDefaultVirtualNetworkId(String defaultVirtualNetworkId);
+ }
+
+ /**
+ * The stage of the lab definition allowing to specify LabStorageType.
+ */
+ interface WithLabStorageType {
+ /**
+ * Specifies labStorageType.
+ * @param labStorageType The type of the lab storage. Possible values include: 'Standard', 'Premium'
+ * @return the next definition stage
+ */
+ WithCreate withLabStorageType(LabStorageType labStorageType);
+ }
+
+ /**
+ * 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 StorageAccounts.
+ */
+ interface WithStorageAccounts {
+ /**
+ * Specifies storageAccounts.
+ * @param storageAccounts The storage accounts of the lab
+ * @return the next definition stage
+ */
+ WithCreate withStorageAccounts(List storageAccounts);
+ }
+
+ /**
+ * The stage of the lab definition allowing to specify VaultName.
+ */
+ interface WithVaultName {
+ /**
+ * Specifies vaultName.
+ * @param vaultName The name of the key vault of the lab
+ * @return the next definition stage
+ */
+ WithCreate withVaultName(String vaultName);
+ }
+
+ /**
+ * 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.WithArtifactsStorageAccount, DefinitionStages.WithCreatedDate, DefinitionStages.WithDefaultStorageAccount, DefinitionStages.WithDefaultVirtualNetworkId, DefinitionStages.WithLabStorageType, DefinitionStages.WithProvisioningState, DefinitionStages.WithStorageAccounts, DefinitionStages.WithVaultName {
+ }
+ }
+ /**
+ * The template for a Lab update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithArtifactsStorageAccount, UpdateStages.WithCreatedDate, UpdateStages.WithDefaultStorageAccount, UpdateStages.WithDefaultVirtualNetworkId, UpdateStages.WithLabStorageType, UpdateStages.WithProvisioningState, UpdateStages.WithStorageAccounts, UpdateStages.WithVaultName {
+ }
+
+ /**
+ * Grouping of Lab update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the lab update allowing to specify ArtifactsStorageAccount.
+ */
+ interface WithArtifactsStorageAccount {
+ /**
+ * Specifies artifactsStorageAccount.
+ * @param artifactsStorageAccount The artifact storage account of the lab
+ * @return the next update stage
+ */
+ Update withArtifactsStorageAccount(String artifactsStorageAccount);
+ }
+
+ /**
+ * The stage of the lab update allowing to specify CreatedDate.
+ */
+ interface WithCreatedDate {
+ /**
+ * Specifies createdDate.
+ * @param createdDate The creation date of the lab
+ * @return the next update stage
+ */
+ Update withCreatedDate(DateTime createdDate);
+ }
+
+ /**
+ * The stage of the lab update allowing to specify DefaultStorageAccount.
+ */
+ interface WithDefaultStorageAccount {
+ /**
+ * Specifies defaultStorageAccount.
+ * @param defaultStorageAccount The lab's default storage account
+ * @return the next update stage
+ */
+ Update withDefaultStorageAccount(String defaultStorageAccount);
+ }
+
+ /**
+ * The stage of the lab update allowing to specify DefaultVirtualNetworkId.
+ */
+ interface WithDefaultVirtualNetworkId {
+ /**
+ * Specifies defaultVirtualNetworkId.
+ * @param defaultVirtualNetworkId The default virtual network identifier of the lab
+ * @return the next update stage
+ */
+ Update withDefaultVirtualNetworkId(String defaultVirtualNetworkId);
+ }
+
+ /**
+ * The stage of the lab update allowing to specify LabStorageType.
+ */
+ interface WithLabStorageType {
+ /**
+ * Specifies labStorageType.
+ * @param labStorageType The type of the lab storage. Possible values include: 'Standard', 'Premium'
+ * @return the next update stage
+ */
+ Update withLabStorageType(LabStorageType labStorageType);
+ }
+
+ /**
+ * 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 StorageAccounts.
+ */
+ interface WithStorageAccounts {
+ /**
+ * Specifies storageAccounts.
+ * @param storageAccounts The storage accounts of the lab
+ * @return the next update stage
+ */
+ Update withStorageAccounts(List storageAccounts);
+ }
+
+ /**
+ * The stage of the lab update allowing to specify VaultName.
+ */
+ interface WithVaultName {
+ /**
+ * Specifies vaultName.
+ * @param vaultName The name of the key vault of the lab
+ * @return the next update stage
+ */
+ Update withVaultName(String vaultName);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LabStorageType.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LabStorageType.java
new file mode 100644
index 000000000000..c03ed5b9a9b9
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LabStorageType.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.v2015_05_21_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for LabStorageType.
+ */
+public final class LabStorageType extends ExpandableStringEnum {
+ /** Static value Standard for LabStorageType. */
+ public static final LabStorageType STANDARD = fromString("Standard");
+
+ /** Static value Premium for LabStorageType. */
+ public static final LabStorageType PREMIUM = fromString("Premium");
+
+ /**
+ * Creates or finds a LabStorageType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding LabStorageType
+ */
+ @JsonCreator
+ public static LabStorageType fromString(String name) {
+ return fromString(name, LabStorageType.class);
+ }
+
+ /**
+ * @return known LabStorageType values
+ */
+ public static Collection values() {
+ return values(LabStorageType.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LabVhd.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LabVhd.java
new file mode 100644
index 000000000000..d60a67f89077
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.DevTestLabsManager;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.LabVhdInner;
+
+/**
+ * Type representing LabVhd.
+ */
+public interface LabVhd extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LabVirtualMachine.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LabVirtualMachine.java
new file mode 100644
index 000000000000..299b3aa2a0f8
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LabVirtualMachine.java
@@ -0,0 +1,716 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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.v2015_05_21_preview.implementation.DevTestLabsManager;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Type representing LabVirtualMachine.
+ */
+public interface LabVirtualMachine extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the artifactDeploymentStatus value.
+ */
+ ArtifactDeploymentStatusProperties artifactDeploymentStatus();
+
+ /**
+ * @return the artifacts value.
+ */
+ List artifacts();
+
+ /**
+ * @return the computeId value.
+ */
+ String computeId();
+
+ /**
+ * @return the createdByUser value.
+ */
+ String createdByUser();
+
+ /**
+ * @return the createdByUserId value.
+ */
+ String createdByUserId();
+
+ /**
+ * @return the customImageId value.
+ */
+ String customImageId();
+
+ /**
+ * @return the disallowPublicIpAddress value.
+ */
+ Boolean disallowPublicIpAddress();
+
+ /**
+ * @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 notes value.
+ */
+ String notes();
+
+ /**
+ * @return the osType value.
+ */
+ String osType();
+
+ /**
+ * @return the ownerObjectId value.
+ */
+ String ownerObjectId();
+
+ /**
+ * @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 tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the userName value.
+ */
+ String userName();
+
+ /**
+ * The entirety of the LabVirtualMachine definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithLocation, 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
+ */
+ WithLocation withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the labvirtualmachine definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location the location parameter value
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * 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 ComputeId.
+ */
+ interface WithComputeId {
+ /**
+ * Specifies computeId.
+ * @param computeId The resource identifier (Microsoft.Compute) of the virtual machine
+ * @return the next definition stage
+ */
+ WithCreate withComputeId(String computeId);
+ }
+
+ /**
+ * 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 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 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 A value indicating 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 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 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 Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags the tags parameter value
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * 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 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.WithArtifactDeploymentStatus, DefinitionStages.WithArtifacts, DefinitionStages.WithComputeId, DefinitionStages.WithCreatedByUser, DefinitionStages.WithCreatedByUserId, DefinitionStages.WithCustomImageId, DefinitionStages.WithDisallowPublicIpAddress, DefinitionStages.WithFqdn, DefinitionStages.WithGalleryImageReference, DefinitionStages.WithIsAuthenticationWithSshKey, DefinitionStages.WithLabSubnetName, DefinitionStages.WithLabVirtualNetworkId, DefinitionStages.WithNotes, DefinitionStages.WithOsType, DefinitionStages.WithOwnerObjectId, DefinitionStages.WithPassword, DefinitionStages.WithProvisioningState, DefinitionStages.WithSize, DefinitionStages.WithSshKey, DefinitionStages.WithTags, DefinitionStages.WithUserName {
+ }
+ }
+ /**
+ * The template for a LabVirtualMachine update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithArtifactDeploymentStatus, UpdateStages.WithArtifacts, UpdateStages.WithComputeId, UpdateStages.WithCreatedByUser, UpdateStages.WithCreatedByUserId, UpdateStages.WithCustomImageId, UpdateStages.WithDisallowPublicIpAddress, UpdateStages.WithFqdn, UpdateStages.WithGalleryImageReference, UpdateStages.WithIsAuthenticationWithSshKey, UpdateStages.WithLabSubnetName, UpdateStages.WithLabVirtualNetworkId, UpdateStages.WithNotes, UpdateStages.WithOsType, UpdateStages.WithOwnerObjectId, UpdateStages.WithPassword, UpdateStages.WithProvisioningState, UpdateStages.WithSize, UpdateStages.WithSshKey, UpdateStages.WithTags, UpdateStages.WithUserName {
+ }
+
+ /**
+ * Grouping of LabVirtualMachine update stages.
+ */
+ interface UpdateStages {
+ /**
+ * 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(ArtifactDeploymentStatusProperties 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 ComputeId.
+ */
+ interface WithComputeId {
+ /**
+ * Specifies computeId.
+ * @param computeId The resource identifier (Microsoft.Compute) of the virtual machine
+ * @return the next update stage
+ */
+ Update withComputeId(String computeId);
+ }
+
+ /**
+ * 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 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 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(GalleryImageReference galleryImageReference);
+ }
+
+ /**
+ * The stage of the labvirtualmachine update allowing to specify IsAuthenticationWithSshKey.
+ */
+ interface WithIsAuthenticationWithSshKey {
+ /**
+ * Specifies isAuthenticationWithSshKey.
+ * @param isAuthenticationWithSshKey A value indicating 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 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 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 Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags the tags parameter value
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * 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);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Labs.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Labs.java
new file mode 100644
index 000000000000..75fe082a4480
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Labs.java
@@ -0,0 +1,58 @@
+/**
+ * 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.v2015_05_21_preview;
+
+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.v2015_05_21_preview.implementation.LabVirtualMachineInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.LabsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Labs.
+ */
+public interface Labs extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner {
+ /**
+ * 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 labVirtualMachine the LabVirtualMachineInner value
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable createEnvironmentAsync(String resourceGroupName, String name, LabVirtualMachineInner labVirtualMachine);
+
+ /**
+ * 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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LinuxOsInfo.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LinuxOsInfo.java
new file mode 100644
index 000000000000..7e33de964d09
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LinuxOsInfo.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.v2015_05_21_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Information about a Linux OS.
+ */
+public class LinuxOsInfo {
+ /**
+ * The state of the Linux OS. Possible values include: 'NonDeprovisioned',
+ * 'DeprovisionRequested', 'DeprovisionApplied'.
+ */
+ @JsonProperty(value = "linuxOsState")
+ private LinuxOsState linuxOsState;
+
+ /**
+ * Get the state of the Linux OS. Possible values include: 'NonDeprovisioned', 'DeprovisionRequested', 'DeprovisionApplied'.
+ *
+ * @return the linuxOsState value
+ */
+ public LinuxOsState linuxOsState() {
+ return this.linuxOsState;
+ }
+
+ /**
+ * Set the state of the Linux OS. 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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LinuxOsState.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/LinuxOsState.java
new file mode 100644
index 000000000000..193365c08800
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ParameterInfo.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/ParameterInfo.java
new file mode 100644
index 000000000000..4ef2b0432b27
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/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.v2015_05_21_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The ParameterInfo model.
+ */
+public class ParameterInfo {
+ /**
+ * The name property.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * The value property.
+ */
+ @JsonProperty(value = "value")
+ private String value;
+
+ /**
+ * Get the name value.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name value.
+ *
+ * @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 value.
+ *
+ * @return the value value
+ */
+ public String value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value value.
+ *
+ * @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-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Policy.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Policy.java
new file mode 100644
index 000000000000..2c27587b89bb
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Policy.java
@@ -0,0 +1,339 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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.v2015_05_21_preview.implementation.DevTestLabsManager;
+import java.util.Map;
+
+/**
+ * Type representing Policy.
+ */
+public interface Policy extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @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 tags();
+
+ /**
+ * @return the threshold value.
+ */
+ String threshold();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the Policy definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithPolicyset, DefinitionStages.WithLocation, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of Policy definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a Policy definition.
+ */
+ interface Blank extends WithPolicyset {
+ }
+
+ /**
+ * The stage of the policy definition allowing to specify Policyset.
+ */
+ interface WithPolicyset {
+ /**
+ * Specifies resourceGroupName, labName, policySetName.
+ * @param resourceGroupName The name of the resource group
+ * @param labName The name of the lab
+ * @param policySetName The name of the policy set
+ * @return the next definition stage
+ */
+ WithLocation withExistingPolicyset(String resourceGroupName, String labName, String policySetName);
+ }
+
+ /**
+ * The stage of the policy definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location the location parameter value
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the policy definition allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description The description of the policy
+ * @return the next definition stage
+ */
+ WithCreate withDescription(String description);
+ }
+
+ /**
+ * The stage of the policy definition allowing to specify EvaluatorType.
+ */
+ interface WithEvaluatorType {
+ /**
+ * Specifies evaluatorType.
+ * @param evaluatorType The evaluator type of the policy. Possible values include: 'AllowedValuesPolicy', 'MaxValuePolicy'
+ * @return the next definition stage
+ */
+ WithCreate withEvaluatorType(PolicyEvaluatorType evaluatorType);
+ }
+
+ /**
+ * The stage of the policy definition allowing to specify FactData.
+ */
+ interface WithFactData {
+ /**
+ * Specifies factData.
+ * @param factData The fact data of the policy
+ * @return the next definition stage
+ */
+ WithCreate withFactData(String factData);
+ }
+
+ /**
+ * The stage of the policy definition allowing to specify FactName.
+ */
+ interface WithFactName {
+ /**
+ * Specifies factName.
+ * @param factName The fact name of the policy. Possible values include: 'UserOwnedLabVmCount', 'LabVmCount', 'LabVmSize', 'GalleryImage', 'UserOwnedLabVmCountInSubnet'
+ * @return the next definition stage
+ */
+ WithCreate withFactName(PolicyFactName factName);
+ }
+
+ /**
+ * The stage of the policy 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 policy definition allowing to specify Status.
+ */
+ interface WithStatus {
+ /**
+ * Specifies status.
+ * @param status The status of the policy. Possible values include: 'Enabled', 'Disabled'
+ * @return the next definition stage
+ */
+ WithCreate withStatus(PolicyStatus status);
+ }
+
+ /**
+ * The stage of the policy definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags the tags parameter value
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the policy definition allowing to specify Threshold.
+ */
+ interface WithThreshold {
+ /**
+ * Specifies threshold.
+ * @param threshold The threshold of the policy
+ * @return the next definition stage
+ */
+ WithCreate withThreshold(String threshold);
+ }
+
+ /**
+ * 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.WithEvaluatorType, DefinitionStages.WithFactData, DefinitionStages.WithFactName, DefinitionStages.WithProvisioningState, DefinitionStages.WithStatus, DefinitionStages.WithTags, DefinitionStages.WithThreshold {
+ }
+ }
+ /**
+ * The template for a Policy update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithDescription, UpdateStages.WithEvaluatorType, UpdateStages.WithFactData, UpdateStages.WithFactName, UpdateStages.WithProvisioningState, UpdateStages.WithStatus, UpdateStages.WithTags, UpdateStages.WithThreshold {
+ }
+
+ /**
+ * Grouping of Policy update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the policy update allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description The description of the policy
+ * @return the next update stage
+ */
+ Update withDescription(String description);
+ }
+
+ /**
+ * The stage of the policy update allowing to specify EvaluatorType.
+ */
+ interface WithEvaluatorType {
+ /**
+ * Specifies evaluatorType.
+ * @param evaluatorType The evaluator type of the policy. Possible values include: 'AllowedValuesPolicy', 'MaxValuePolicy'
+ * @return the next update stage
+ */
+ Update withEvaluatorType(PolicyEvaluatorType evaluatorType);
+ }
+
+ /**
+ * The stage of the policy update allowing to specify FactData.
+ */
+ interface WithFactData {
+ /**
+ * Specifies factData.
+ * @param factData The fact data of the policy
+ * @return the next update stage
+ */
+ Update withFactData(String factData);
+ }
+
+ /**
+ * The stage of the policy update allowing to specify FactName.
+ */
+ interface WithFactName {
+ /**
+ * Specifies factName.
+ * @param factName The fact name of the policy. Possible values include: 'UserOwnedLabVmCount', 'LabVmCount', 'LabVmSize', 'GalleryImage', 'UserOwnedLabVmCountInSubnet'
+ * @return the next update stage
+ */
+ Update withFactName(PolicyFactName factName);
+ }
+
+ /**
+ * The stage of the policy 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 policy update allowing to specify Status.
+ */
+ interface WithStatus {
+ /**
+ * Specifies status.
+ * @param status The status of the policy. Possible values include: 'Enabled', 'Disabled'
+ * @return the next update stage
+ */
+ Update withStatus(PolicyStatus status);
+ }
+
+ /**
+ * The stage of the policy update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags the tags parameter value
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the policy update allowing to specify Threshold.
+ */
+ interface WithThreshold {
+ /**
+ * Specifies threshold.
+ * @param threshold The threshold of the policy
+ * @return the next update stage
+ */
+ Update withThreshold(String threshold);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyEvaluatorType.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyEvaluatorType.java
new file mode 100644
index 000000000000..26bcce4ec481
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyEvaluatorType.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.v2015_05_21_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for PolicyEvaluatorType.
+ */
+public final class PolicyEvaluatorType extends ExpandableStringEnum {
+ /** Static value AllowedValuesPolicy for PolicyEvaluatorType. */
+ public static final PolicyEvaluatorType ALLOWED_VALUES_POLICY = fromString("AllowedValuesPolicy");
+
+ /** Static value MaxValuePolicy for PolicyEvaluatorType. */
+ public static final PolicyEvaluatorType MAX_VALUE_POLICY = fromString("MaxValuePolicy");
+
+ /**
+ * Creates or finds a PolicyEvaluatorType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding PolicyEvaluatorType
+ */
+ @JsonCreator
+ public static PolicyEvaluatorType fromString(String name) {
+ return fromString(name, PolicyEvaluatorType.class);
+ }
+
+ /**
+ * @return known PolicyEvaluatorType values
+ */
+ public static Collection values() {
+ return values(PolicyEvaluatorType.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyFactName.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyFactName.java
new file mode 100644
index 000000000000..68a65ca8ab0b
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyFactName.java
@@ -0,0 +1,50 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for PolicyFactName.
+ */
+public final class PolicyFactName extends ExpandableStringEnum {
+ /** Static value UserOwnedLabVmCount for PolicyFactName. */
+ public static final PolicyFactName USER_OWNED_LAB_VM_COUNT = fromString("UserOwnedLabVmCount");
+
+ /** Static value LabVmCount for PolicyFactName. */
+ public static final PolicyFactName LAB_VM_COUNT = fromString("LabVmCount");
+
+ /** Static value LabVmSize for PolicyFactName. */
+ public static final PolicyFactName LAB_VM_SIZE = fromString("LabVmSize");
+
+ /** Static value GalleryImage for PolicyFactName. */
+ public static final PolicyFactName GALLERY_IMAGE = fromString("GalleryImage");
+
+ /** Static value UserOwnedLabVmCountInSubnet for PolicyFactName. */
+ public static final PolicyFactName USER_OWNED_LAB_VM_COUNT_IN_SUBNET = fromString("UserOwnedLabVmCountInSubnet");
+
+ /**
+ * Creates or finds a PolicyFactName from its string representation.
+ * @param name a name to look for
+ * @return the corresponding PolicyFactName
+ */
+ @JsonCreator
+ public static PolicyFactName fromString(String name) {
+ return fromString(name, PolicyFactName.class);
+ }
+
+ /**
+ * @return known PolicyFactName values
+ */
+ public static Collection values() {
+ return values(PolicyFactName.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicySetResult.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicySetResult.java
new file mode 100644
index 000000000000..1c287027762e
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicySetResult.java
@@ -0,0 +1,71 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Result of a policy set evaluation.
+ */
+public class PolicySetResult {
+ /**
+ * A value indicating whether this policy set evaluation has discovered
+ * violations.
+ */
+ @JsonProperty(value = "hasError")
+ private Boolean hasError;
+
+ /**
+ * The list of policy violations.
+ */
+ @JsonProperty(value = "policyViolations")
+ private List policyViolations;
+
+ /**
+ * Get a value indicating whether this policy set evaluation has discovered violations.
+ *
+ * @return the hasError value
+ */
+ public Boolean hasError() {
+ return this.hasError;
+ }
+
+ /**
+ * Set a value indicating whether this policy set evaluation has discovered violations.
+ *
+ * @param hasError the hasError value to set
+ * @return the PolicySetResult object itself.
+ */
+ public PolicySetResult withHasError(Boolean hasError) {
+ this.hasError = hasError;
+ return this;
+ }
+
+ /**
+ * Get the list of policy violations.
+ *
+ * @return the policyViolations value
+ */
+ public List policyViolations() {
+ return this.policyViolations;
+ }
+
+ /**
+ * Set the list of policy violations.
+ *
+ * @param policyViolations the policyViolations value to set
+ * @return the PolicySetResult object itself.
+ */
+ public PolicySetResult withPolicyViolations(List policyViolations) {
+ this.policyViolations = policyViolations;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicySets.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicySets.java
new file mode 100644
index 000000000000..875ee8a7b022
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicySets.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.v2015_05_21_preview;
+
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.PolicySetsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing PolicySets.
+ */
+public interface PolicySets extends HasInner {
+ /**
+ * Evaluates Lab Policy.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the policy set.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable evaluatePoliciesAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyStatus.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyStatus.java
new file mode 100644
index 000000000000..4d0558862c1a
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyStatus.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.v2015_05_21_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for PolicyStatus.
+ */
+public final class PolicyStatus extends ExpandableStringEnum {
+ /** Static value Enabled for PolicyStatus. */
+ public static final PolicyStatus ENABLED = fromString("Enabled");
+
+ /** Static value Disabled for PolicyStatus. */
+ public static final PolicyStatus DISABLED = fromString("Disabled");
+
+ /**
+ * Creates or finds a PolicyStatus from its string representation.
+ * @param name a name to look for
+ * @return the corresponding PolicyStatus
+ */
+ @JsonCreator
+ public static PolicyStatus fromString(String name) {
+ return fromString(name, PolicyStatus.class);
+ }
+
+ /**
+ * @return known PolicyStatus values
+ */
+ public static Collection values() {
+ return values(PolicyStatus.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyViolation.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyViolation.java
new file mode 100644
index 000000000000..9cb66489f606
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/PolicyViolation.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.v2015_05_21_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Policy violation.
+ */
+public class PolicyViolation {
+ /**
+ * The code of the policy violation.
+ */
+ @JsonProperty(value = "code")
+ private String code;
+
+ /**
+ * The message of the policy violation.
+ */
+ @JsonProperty(value = "message")
+ private String message;
+
+ /**
+ * Get the code of the policy violation.
+ *
+ * @return the code value
+ */
+ public String code() {
+ return this.code;
+ }
+
+ /**
+ * Set the code of the policy violation.
+ *
+ * @param code the code value to set
+ * @return the PolicyViolation object itself.
+ */
+ public PolicyViolation withCode(String code) {
+ this.code = code;
+ return this;
+ }
+
+ /**
+ * Get the message of the policy violation.
+ *
+ * @return the message value
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Set the message of the policy violation.
+ *
+ * @param message the message value to set
+ * @return the PolicyViolation object itself.
+ */
+ public PolicyViolation withMessage(String message) {
+ this.message = message;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Policys.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Policys.java
new file mode 100644
index 000000000000..8ef6911ebdb1
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Policys.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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.PolicysInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Policys.
+ */
+public interface Policys 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 getResourceAsync(String resourceGroupName, String labName, String policySetName, String name);
+
+ /**
+ * List policies.
+ *
+ * @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 deleteResourceAsync(String resourceGroupName, String labName, String policySetName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Schedule.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Schedule.java
new file mode 100644
index 000000000000..11ec5c0002bb
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Schedule.java
@@ -0,0 +1,338 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.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.v2015_05_21_preview.implementation.DevTestLabsManager;
+import java.util.Map;
+
+/**
+ * Type representing Schedule.
+ */
+public interface Schedule extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @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 provisioningState value.
+ */
+ String provisioningState();
+
+ /**
+ * @return the status value.
+ */
+ EnableStatus status();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the taskType value.
+ */
+ TaskType taskType();
+
+ /**
+ * @return the timeZoneId value.
+ */
+ String timeZoneId();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the weeklyRecurrence value.
+ */
+ WeekDetails weeklyRecurrence();
+
+ /**
+ * The entirety of the Schedule definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithLocation, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of Schedule definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a Schedule definition.
+ */
+ interface Blank extends WithLab {
+ }
+
+ /**
+ * The stage of the schedule 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
+ */
+ WithLocation withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the schedule definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location the location parameter value
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the schedule definition allowing to specify DailyRecurrence.
+ */
+ interface WithDailyRecurrence {
+ /**
+ * Specifies dailyRecurrence.
+ * @param dailyRecurrence The daily recurrence of the schedule
+ * @return the next definition stage
+ */
+ WithCreate withDailyRecurrence(DayDetails dailyRecurrence);
+ }
+
+ /**
+ * The stage of the schedule definition allowing to specify HourlyRecurrence.
+ */
+ interface WithHourlyRecurrence {
+ /**
+ * Specifies hourlyRecurrence.
+ * @param hourlyRecurrence The hourly recurrence of the schedule
+ * @return the next definition stage
+ */
+ WithCreate withHourlyRecurrence(HourDetails hourlyRecurrence);
+ }
+
+ /**
+ * The stage of the schedule 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 schedule definition allowing to specify Status.
+ */
+ interface WithStatus {
+ /**
+ * Specifies status.
+ * @param status The status of the schedule. Possible values include: 'Enabled', 'Disabled'
+ * @return the next definition stage
+ */
+ WithCreate withStatus(EnableStatus status);
+ }
+
+ /**
+ * The stage of the schedule definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags the tags parameter value
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * The stage of the schedule definition allowing to specify TaskType.
+ */
+ interface WithTaskType {
+ /**
+ * Specifies taskType.
+ * @param taskType The task type of the schedule. Possible values include: 'LabVmsShutdownTask', 'LabVmsStartupTask', 'LabBillingTask'
+ * @return the next definition stage
+ */
+ WithCreate withTaskType(TaskType taskType);
+ }
+
+ /**
+ * The stage of the schedule definition allowing to specify TimeZoneId.
+ */
+ interface WithTimeZoneId {
+ /**
+ * Specifies timeZoneId.
+ * @param timeZoneId The time zone id
+ * @return the next definition stage
+ */
+ WithCreate withTimeZoneId(String timeZoneId);
+ }
+
+ /**
+ * The stage of the schedule definition allowing to specify WeeklyRecurrence.
+ */
+ interface WithWeeklyRecurrence {
+ /**
+ * Specifies weeklyRecurrence.
+ * @param weeklyRecurrence The weekly recurrence of the schedule
+ * @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.WithProvisioningState, DefinitionStages.WithStatus, DefinitionStages.WithTags, DefinitionStages.WithTaskType, DefinitionStages.WithTimeZoneId, DefinitionStages.WithWeeklyRecurrence {
+ }
+ }
+ /**
+ * The template for a Schedule update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithDailyRecurrence, UpdateStages.WithHourlyRecurrence, UpdateStages.WithProvisioningState, UpdateStages.WithStatus, UpdateStages.WithTags, UpdateStages.WithTaskType, UpdateStages.WithTimeZoneId, UpdateStages.WithWeeklyRecurrence {
+ }
+
+ /**
+ * Grouping of Schedule update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the schedule update allowing to specify DailyRecurrence.
+ */
+ interface WithDailyRecurrence {
+ /**
+ * Specifies dailyRecurrence.
+ * @param dailyRecurrence The daily recurrence of the schedule
+ * @return the next update stage
+ */
+ Update withDailyRecurrence(DayDetails dailyRecurrence);
+ }
+
+ /**
+ * The stage of the schedule update allowing to specify HourlyRecurrence.
+ */
+ interface WithHourlyRecurrence {
+ /**
+ * Specifies hourlyRecurrence.
+ * @param hourlyRecurrence The hourly recurrence of the schedule
+ * @return the next update stage
+ */
+ Update withHourlyRecurrence(HourDetails hourlyRecurrence);
+ }
+
+ /**
+ * The stage of the schedule 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 schedule update allowing to specify Status.
+ */
+ interface WithStatus {
+ /**
+ * Specifies status.
+ * @param status The status of the schedule. Possible values include: 'Enabled', 'Disabled'
+ * @return the next update stage
+ */
+ Update withStatus(EnableStatus status);
+ }
+
+ /**
+ * The stage of the schedule update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags the tags parameter value
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ /**
+ * The stage of the schedule update allowing to specify TaskType.
+ */
+ interface WithTaskType {
+ /**
+ * Specifies taskType.
+ * @param taskType The task type of the schedule. Possible values include: 'LabVmsShutdownTask', 'LabVmsStartupTask', 'LabBillingTask'
+ * @return the next update stage
+ */
+ Update withTaskType(TaskType taskType);
+ }
+
+ /**
+ * The stage of the schedule update allowing to specify TimeZoneId.
+ */
+ interface WithTimeZoneId {
+ /**
+ * Specifies timeZoneId.
+ * @param timeZoneId The time zone id
+ * @return the next update stage
+ */
+ Update withTimeZoneId(String timeZoneId);
+ }
+
+ /**
+ * The stage of the schedule update allowing to specify WeeklyRecurrence.
+ */
+ interface WithWeeklyRecurrence {
+ /**
+ * Specifies weeklyRecurrence.
+ * @param weeklyRecurrence The weekly recurrence of the schedule
+ * @return the next update stage
+ */
+ Update withWeeklyRecurrence(WeekDetails weeklyRecurrence);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Schedules.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Schedules.java
new file mode 100644
index 000000000000..a0774b8f05c4
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Schedules.java
@@ -0,0 +1,64 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.SchedulesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Schedules.
+ */
+public interface Schedules extends SupportsCreating, HasInner {
+ /**
+ * Execute a schedule. 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 schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable executeAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getResourceAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List schedules.
+ *
+ * @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 schedule. 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 schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteResourceAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SourceControlType.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SourceControlType.java
new file mode 100644
index 000000000000..096b5c474828
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SourceControlType.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.v2015_05_21_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for SourceControlType.
+ */
+public final class SourceControlType extends ExpandableStringEnum {
+ /** Static value VsoGit for SourceControlType. */
+ public static final SourceControlType VSO_GIT = fromString("VsoGit");
+
+ /** Static value GitHub for SourceControlType. */
+ public static final SourceControlType GIT_HUB = fromString("GitHub");
+
+ /**
+ * Creates or finds a SourceControlType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding SourceControlType
+ */
+ @JsonCreator
+ public static SourceControlType fromString(String name) {
+ return fromString(name, SourceControlType.class);
+ }
+
+ /**
+ * @return known SourceControlType values
+ */
+ public static Collection values() {
+ return values(SourceControlType.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Subnet.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Subnet.java
new file mode 100644
index 000000000000..7200b6e12a34
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/Subnet.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.v2015_05_21_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The Subnet model.
+ */
+public class Subnet {
+ /**
+ * The resourceId property.
+ */
+ @JsonProperty(value = "resourceId")
+ private String resourceId;
+
+ /**
+ * The labSubnetName property.
+ */
+ @JsonProperty(value = "labSubnetName")
+ private String labSubnetName;
+
+ /**
+ * Possible values include: 'Default', 'Deny', 'Allow'.
+ */
+ @JsonProperty(value = "allowPublicIp")
+ private UsagePermissionType allowPublicIp;
+
+ /**
+ * Get the resourceId value.
+ *
+ * @return the resourceId value
+ */
+ public String resourceId() {
+ return this.resourceId;
+ }
+
+ /**
+ * Set the resourceId value.
+ *
+ * @param resourceId the resourceId value to set
+ * @return the Subnet object itself.
+ */
+ public Subnet withResourceId(String resourceId) {
+ this.resourceId = resourceId;
+ return this;
+ }
+
+ /**
+ * Get the labSubnetName value.
+ *
+ * @return the labSubnetName value
+ */
+ public String labSubnetName() {
+ return this.labSubnetName;
+ }
+
+ /**
+ * Set the labSubnetName value.
+ *
+ * @param labSubnetName the labSubnetName value to set
+ * @return the Subnet object itself.
+ */
+ public Subnet withLabSubnetName(String labSubnetName) {
+ this.labSubnetName = labSubnetName;
+ return this;
+ }
+
+ /**
+ * Get possible values include: 'Default', 'Deny', 'Allow'.
+ *
+ * @return the allowPublicIp value
+ */
+ public UsagePermissionType allowPublicIp() {
+ return this.allowPublicIp;
+ }
+
+ /**
+ * Set possible values include: 'Default', 'Deny', 'Allow'.
+ *
+ * @param allowPublicIp the allowPublicIp value to set
+ * @return the Subnet object itself.
+ */
+ public Subnet withAllowPublicIp(UsagePermissionType allowPublicIp) {
+ this.allowPublicIp = allowPublicIp;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubnetOverride.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubnetOverride.java
new file mode 100644
index 000000000000..abfaed4d231e
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubnetOverride.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.v2015_05_21_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Property overrides on a subnet of a virtual network.
+ */
+public class SubnetOverride {
+ /**
+ * The resource identifier of the subnet.
+ */
+ @JsonProperty(value = "resourceId")
+ private String resourceId;
+
+ /**
+ * The name given to the subnet within the lab.
+ */
+ @JsonProperty(value = "labSubnetName")
+ private String labSubnetName;
+
+ /**
+ * Indicates whether this subnet can be used during virtual machine
+ * creation. Possible values include: 'Default', 'Deny', 'Allow'.
+ */
+ @JsonProperty(value = "useInVmCreationPermission")
+ private UsagePermissionType useInVmCreationPermission;
+
+ /**
+ * Indicates whether public IP addresses can be assigned to virtual
+ * machines on this subnet. Possible values include: 'Default', 'Deny',
+ * 'Allow'.
+ */
+ @JsonProperty(value = "usePublicIpAddressPermission")
+ private UsagePermissionType usePublicIpAddressPermission;
+
+ /**
+ * Get the resource identifier of the subnet.
+ *
+ * @return the resourceId value
+ */
+ public String resourceId() {
+ return this.resourceId;
+ }
+
+ /**
+ * Set the resource identifier of the subnet.
+ *
+ * @param resourceId the resourceId value to set
+ * @return the SubnetOverride object itself.
+ */
+ public SubnetOverride withResourceId(String resourceId) {
+ this.resourceId = resourceId;
+ return this;
+ }
+
+ /**
+ * Get the name given to the subnet within the lab.
+ *
+ * @return the labSubnetName value
+ */
+ public String labSubnetName() {
+ return this.labSubnetName;
+ }
+
+ /**
+ * Set the name given to the subnet within the lab.
+ *
+ * @param labSubnetName the labSubnetName value to set
+ * @return the SubnetOverride object itself.
+ */
+ public SubnetOverride withLabSubnetName(String labSubnetName) {
+ this.labSubnetName = labSubnetName;
+ return this;
+ }
+
+ /**
+ * Get indicates whether this subnet can be used during virtual machine creation. Possible values include: 'Default', 'Deny', 'Allow'.
+ *
+ * @return the useInVmCreationPermission value
+ */
+ public UsagePermissionType useInVmCreationPermission() {
+ return this.useInVmCreationPermission;
+ }
+
+ /**
+ * Set indicates whether this subnet can be used during virtual machine creation. Possible values include: 'Default', 'Deny', 'Allow'.
+ *
+ * @param useInVmCreationPermission the useInVmCreationPermission value to set
+ * @return the SubnetOverride object itself.
+ */
+ public SubnetOverride withUseInVmCreationPermission(UsagePermissionType useInVmCreationPermission) {
+ this.useInVmCreationPermission = useInVmCreationPermission;
+ return this;
+ }
+
+ /**
+ * Get indicates whether public IP addresses can be assigned to virtual machines on this subnet. Possible values include: 'Default', 'Deny', 'Allow'.
+ *
+ * @return the usePublicIpAddressPermission value
+ */
+ public UsagePermissionType usePublicIpAddressPermission() {
+ return this.usePublicIpAddressPermission;
+ }
+
+ /**
+ * Set indicates whether public IP addresses can be assigned to virtual machines on this subnet. Possible values include: 'Default', 'Deny', 'Allow'.
+ *
+ * @param usePublicIpAddressPermission the usePublicIpAddressPermission value to set
+ * @return the SubnetOverride object itself.
+ */
+ public SubnetOverride withUsePublicIpAddressPermission(UsagePermissionType usePublicIpAddressPermission) {
+ this.usePublicIpAddressPermission = usePublicIpAddressPermission;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubscriptionNotification.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubscriptionNotification.java
new file mode 100644
index 000000000000..72788688b47b
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubscriptionNotification.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.v2015_05_21_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The SubscriptionNotification model.
+ */
+public class SubscriptionNotification {
+ /**
+ * The registrationDate property.
+ */
+ @JsonProperty(value = "registrationDate")
+ private String registrationDate;
+
+ /**
+ * Possible values include: 'NotDefined', 'Registered', 'Unregistered',
+ * 'Warned', 'Suspended', 'Deleted'.
+ */
+ @JsonProperty(value = "state")
+ private SubscriptionNotificationState state;
+
+ /**
+ * The properties property.
+ */
+ @JsonProperty(value = "properties")
+ private SubscriptionNotificationProperties properties;
+
+ /**
+ * Get the registrationDate value.
+ *
+ * @return the registrationDate value
+ */
+ public String registrationDate() {
+ return this.registrationDate;
+ }
+
+ /**
+ * Set the registrationDate value.
+ *
+ * @param registrationDate the registrationDate value to set
+ * @return the SubscriptionNotification object itself.
+ */
+ public SubscriptionNotification withRegistrationDate(String registrationDate) {
+ this.registrationDate = registrationDate;
+ return this;
+ }
+
+ /**
+ * Get possible values include: 'NotDefined', 'Registered', 'Unregistered', 'Warned', 'Suspended', 'Deleted'.
+ *
+ * @return the state value
+ */
+ public SubscriptionNotificationState state() {
+ return this.state;
+ }
+
+ /**
+ * Set possible values include: 'NotDefined', 'Registered', 'Unregistered', 'Warned', 'Suspended', 'Deleted'.
+ *
+ * @param state the state value to set
+ * @return the SubscriptionNotification object itself.
+ */
+ public SubscriptionNotification withState(SubscriptionNotificationState state) {
+ this.state = state;
+ return this;
+ }
+
+ /**
+ * Get the properties value.
+ *
+ * @return the properties value
+ */
+ public SubscriptionNotificationProperties properties() {
+ return this.properties;
+ }
+
+ /**
+ * Set the properties value.
+ *
+ * @param properties the properties value to set
+ * @return the SubscriptionNotification object itself.
+ */
+ public SubscriptionNotification withProperties(SubscriptionNotificationProperties properties) {
+ this.properties = properties;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubscriptionNotificationProperties.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubscriptionNotificationProperties.java
new file mode 100644
index 000000000000..2802e5ecfb4b
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubscriptionNotificationProperties.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.v2015_05_21_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The SubscriptionNotificationProperties model.
+ */
+public class SubscriptionNotificationProperties {
+ /**
+ * The tenantId property.
+ */
+ @JsonProperty(value = "tenantId")
+ private String tenantId;
+
+ /**
+ * Get the tenantId value.
+ *
+ * @return the tenantId value
+ */
+ public String tenantId() {
+ return this.tenantId;
+ }
+
+ /**
+ * Set the tenantId value.
+ *
+ * @param tenantId the tenantId value to set
+ * @return the SubscriptionNotificationProperties object itself.
+ */
+ public SubscriptionNotificationProperties withTenantId(String tenantId) {
+ this.tenantId = tenantId;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubscriptionNotificationState.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubscriptionNotificationState.java
new file mode 100644
index 000000000000..3adcba9c585c
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/SubscriptionNotificationState.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.v2015_05_21_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for SubscriptionNotificationState.
+ */
+public final class SubscriptionNotificationState extends ExpandableStringEnum {
+ /** Static value NotDefined for SubscriptionNotificationState. */
+ public static final SubscriptionNotificationState NOT_DEFINED = fromString("NotDefined");
+
+ /** Static value Registered for SubscriptionNotificationState. */
+ public static final SubscriptionNotificationState REGISTERED = fromString("Registered");
+
+ /** Static value Unregistered for SubscriptionNotificationState. */
+ public static final SubscriptionNotificationState UNREGISTERED = fromString("Unregistered");
+
+ /** Static value Warned for SubscriptionNotificationState. */
+ public static final SubscriptionNotificationState WARNED = fromString("Warned");
+
+ /** Static value Suspended for SubscriptionNotificationState. */
+ public static final SubscriptionNotificationState SUSPENDED = fromString("Suspended");
+
+ /** Static value Deleted for SubscriptionNotificationState. */
+ public static final SubscriptionNotificationState DELETED = fromString("Deleted");
+
+ /**
+ * Creates or finds a SubscriptionNotificationState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding SubscriptionNotificationState
+ */
+ @JsonCreator
+ public static SubscriptionNotificationState fromString(String name) {
+ return fromString(name, SubscriptionNotificationState.class);
+ }
+
+ /**
+ * @return known SubscriptionNotificationState values
+ */
+ public static Collection values() {
+ return values(SubscriptionNotificationState.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/TaskType.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/TaskType.java
new file mode 100644
index 000000000000..52a24f1de1b8
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/TaskType.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.v2015_05_21_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for TaskType.
+ */
+public final class TaskType extends ExpandableStringEnum {
+ /** Static value LabVmsShutdownTask for TaskType. */
+ public static final TaskType LAB_VMS_SHUTDOWN_TASK = fromString("LabVmsShutdownTask");
+
+ /** Static value LabVmsStartupTask for TaskType. */
+ public static final TaskType LAB_VMS_STARTUP_TASK = fromString("LabVmsStartupTask");
+
+ /** Static value LabBillingTask for TaskType. */
+ public static final TaskType LAB_BILLING_TASK = fromString("LabBillingTask");
+
+ /**
+ * Creates or finds a TaskType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding TaskType
+ */
+ @JsonCreator
+ public static TaskType fromString(String name) {
+ return fromString(name, TaskType.class);
+ }
+
+ /**
+ * @return known TaskType values
+ */
+ public static Collection values() {
+ return values(TaskType.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/UsagePermissionType.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/UsagePermissionType.java
new file mode 100644
index 000000000000..485bbae4c579
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/UsagePermissionType.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.v2015_05_21_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for UsagePermissionType.
+ */
+public final class UsagePermissionType extends ExpandableStringEnum {
+ /** Static value Default for UsagePermissionType. */
+ public static final UsagePermissionType DEFAULT = fromString("Default");
+
+ /** Static value Deny for UsagePermissionType. */
+ public static final UsagePermissionType DENY = fromString("Deny");
+
+ /** Static value Allow for UsagePermissionType. */
+ public static final UsagePermissionType ALLOW = fromString("Allow");
+
+ /**
+ * Creates or finds a UsagePermissionType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding UsagePermissionType
+ */
+ @JsonCreator
+ public static UsagePermissionType fromString(String name) {
+ return fromString(name, UsagePermissionType.class);
+ }
+
+ /**
+ * @return known UsagePermissionType values
+ */
+ public static Collection values() {
+ return values(UsagePermissionType.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VMCostProperties.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VMCostProperties.java
new file mode 100644
index 000000000000..1d67ef6f9b59
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VMCostProperties.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.v2015_05_21_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The VMCostProperties model.
+ */
+public class VMCostProperties {
+ /**
+ * The name property.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * The resourceGroupName property.
+ */
+ @JsonProperty(value = "resourceGroupName")
+ private String resourceGroupName;
+
+ /**
+ * The cost property.
+ */
+ @JsonProperty(value = "cost")
+ private Double cost;
+
+ /**
+ * Get the name value.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name value.
+ *
+ * @param name the name value to set
+ * @return the VMCostProperties object itself.
+ */
+ public VMCostProperties withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the resourceGroupName value.
+ *
+ * @return the resourceGroupName value
+ */
+ public String resourceGroupName() {
+ return this.resourceGroupName;
+ }
+
+ /**
+ * Set the resourceGroupName value.
+ *
+ * @param resourceGroupName the resourceGroupName value to set
+ * @return the VMCostProperties object itself.
+ */
+ public VMCostProperties withResourceGroupName(String resourceGroupName) {
+ this.resourceGroupName = resourceGroupName;
+ return this;
+ }
+
+ /**
+ * Get the cost value.
+ *
+ * @return the cost value
+ */
+ public Double cost() {
+ return this.cost;
+ }
+
+ /**
+ * Set the cost value.
+ *
+ * @param cost the cost value to set
+ * @return the VMCostProperties object itself.
+ */
+ public VMCostProperties withCost(Double cost) {
+ this.cost = cost;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VirtualMachines.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VirtualMachines.java
new file mode 100644
index 000000000000..f1b38744ae8c
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VirtualMachines.java
@@ -0,0 +1,86 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.VirtualMachinesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing VirtualMachines.
+ */
+public interface VirtualMachines extends SupportsCreating, HasInner {
+ /**
+ * Apply artifacts to Lab VM. 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 virtual Machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable applyArtifactsAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * Start a Lab VM. 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 virtual Machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable startAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * Stop a Lab VM. 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 virtual Machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable stopAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get virtual machine.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual Machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getResourceAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List virtual machines.
+ *
+ * @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 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 name The name of the virtual Machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteResourceAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VirtualNetwork.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VirtualNetwork.java
new file mode 100644
index 000000000000..77bf6f730430
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VirtualNetwork.java
@@ -0,0 +1,281 @@
+/**
+ * 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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.VirtualNetworkInner;
+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.v2015_05_21_preview.implementation.DevTestLabsManager;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Type representing VirtualNetwork.
+ */
+public interface VirtualNetwork extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the allowedSubnets value.
+ */
+ List allowedSubnets();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the externalProviderResourceId value.
+ */
+ String externalProviderResourceId();
+
+ /**
+ * @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 subnetOverrides value.
+ */
+ List subnetOverrides();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the VirtualNetwork definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLab, DefinitionStages.WithLocation, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of VirtualNetwork definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a VirtualNetwork definition.
+ */
+ interface Blank extends WithLab {
+ }
+
+ /**
+ * The stage of the virtualnetwork 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
+ */
+ WithLocation withExistingLab(String resourceGroupName, String labName);
+ }
+
+ /**
+ * The stage of the virtualnetwork definition allowing to specify Location.
+ */
+ interface WithLocation {
+ /**
+ * Specifies location.
+ * @param location the location parameter value
+ * @return the next definition stage
+ */
+ WithCreate withLocation(String location);
+ }
+
+ /**
+ * The stage of the virtualnetwork definition allowing to specify AllowedSubnets.
+ */
+ interface WithAllowedSubnets {
+ /**
+ * Specifies allowedSubnets.
+ * @param allowedSubnets The allowed subnets of the virtual network
+ * @return the next definition stage
+ */
+ WithCreate withAllowedSubnets(List allowedSubnets);
+ }
+
+ /**
+ * The stage of the virtualnetwork definition allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description The description of the virtual network
+ * @return the next definition stage
+ */
+ WithCreate withDescription(String description);
+ }
+
+ /**
+ * The stage of the virtualnetwork definition allowing to specify ExternalProviderResourceId.
+ */
+ interface WithExternalProviderResourceId {
+ /**
+ * Specifies externalProviderResourceId.
+ * @param externalProviderResourceId The Microsoft.Network resource identifier of the virtual network
+ * @return the next definition stage
+ */
+ WithCreate withExternalProviderResourceId(String externalProviderResourceId);
+ }
+
+ /**
+ * The stage of the virtualnetwork 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 virtualnetwork definition allowing to specify SubnetOverrides.
+ */
+ interface WithSubnetOverrides {
+ /**
+ * Specifies subnetOverrides.
+ * @param subnetOverrides The subnet overrides of the virtual network
+ * @return the next definition stage
+ */
+ WithCreate withSubnetOverrides(List subnetOverrides);
+ }
+
+ /**
+ * The stage of the virtualnetwork definition allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags the tags parameter value
+ * @return the next definition stage
+ */
+ WithCreate withTags(Map tags);
+ }
+
+ /**
+ * 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.WithAllowedSubnets, DefinitionStages.WithDescription, DefinitionStages.WithExternalProviderResourceId, DefinitionStages.WithProvisioningState, DefinitionStages.WithSubnetOverrides, DefinitionStages.WithTags {
+ }
+ }
+ /**
+ * The template for a VirtualNetwork update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithAllowedSubnets, UpdateStages.WithDescription, UpdateStages.WithExternalProviderResourceId, UpdateStages.WithProvisioningState, UpdateStages.WithSubnetOverrides, UpdateStages.WithTags {
+ }
+
+ /**
+ * Grouping of VirtualNetwork update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the virtualnetwork update allowing to specify AllowedSubnets.
+ */
+ interface WithAllowedSubnets {
+ /**
+ * Specifies allowedSubnets.
+ * @param allowedSubnets The allowed subnets of the virtual network
+ * @return the next update stage
+ */
+ Update withAllowedSubnets(List allowedSubnets);
+ }
+
+ /**
+ * The stage of the virtualnetwork update allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description The description of the virtual network
+ * @return the next update stage
+ */
+ Update withDescription(String description);
+ }
+
+ /**
+ * The stage of the virtualnetwork update allowing to specify ExternalProviderResourceId.
+ */
+ interface WithExternalProviderResourceId {
+ /**
+ * Specifies externalProviderResourceId.
+ * @param externalProviderResourceId The Microsoft.Network resource identifier of the virtual network
+ * @return the next update stage
+ */
+ Update withExternalProviderResourceId(String externalProviderResourceId);
+ }
+
+ /**
+ * The stage of the virtualnetwork 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 virtualnetwork update allowing to specify SubnetOverrides.
+ */
+ interface WithSubnetOverrides {
+ /**
+ * Specifies subnetOverrides.
+ * @param subnetOverrides The subnet overrides of the virtual network
+ * @return the next update stage
+ */
+ Update withSubnetOverrides(List subnetOverrides);
+ }
+
+ /**
+ * The stage of the virtualnetwork update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags the tags parameter value
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VirtualNetworks.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VirtualNetworks.java
new file mode 100644
index 000000000000..0788b26e5568
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/VirtualNetworks.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.v2015_05_21_preview;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.implementation.VirtualNetworksInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing VirtualNetworks.
+ */
+public interface VirtualNetworks extends SupportsCreating, HasInner {
+ /**
+ * Get virtual network.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getResourceAsync(String resourceGroupName, String labName, String name);
+
+ /**
+ * List virtual networks.
+ *
+ * @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 virtual network. 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 virtual network.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteResourceAsync(String resourceGroupName, String labName, String name);
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/WeekDetails.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/WeekDetails.java
new file mode 100644
index 000000000000..b4f29b3aaa59
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/WeekDetails.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.v2015_05_21_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Properties of a weekly schedule.
+ */
+public class WeekDetails {
+ /**
+ * The days of the week.
+ */
+ @JsonProperty(value = "weekdays")
+ private List weekdays;
+
+ /**
+ * The time of the day.
+ */
+ @JsonProperty(value = "time")
+ private String time;
+
+ /**
+ * Get the days of the week.
+ *
+ * @return the weekdays value
+ */
+ public List weekdays() {
+ return this.weekdays;
+ }
+
+ /**
+ * Set the days of the week.
+ *
+ * @param weekdays the weekdays value to set
+ * @return the WeekDetails object itself.
+ */
+ public WeekDetails withWeekdays(List weekdays) {
+ this.weekdays = weekdays;
+ return this;
+ }
+
+ /**
+ * Get the time of the day.
+ *
+ * @return the time value
+ */
+ public String time() {
+ return this.time;
+ }
+
+ /**
+ * Set the time of the day.
+ *
+ * @param time the time value to set
+ * @return the WeekDetails object itself.
+ */
+ public WeekDetails withTime(String time) {
+ this.time = time;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/WindowsOsInfo.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/WindowsOsInfo.java
new file mode 100644
index 000000000000..debff43dc7dd
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/WindowsOsInfo.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.v2015_05_21_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Information about a Windows OS.
+ */
+public class WindowsOsInfo {
+ /**
+ * The state of the Windows OS. Possible values include: 'NonSysprepped',
+ * 'SysprepRequested', 'SysprepApplied'.
+ */
+ @JsonProperty(value = "windowsOsState")
+ private WindowsOsState windowsOsState;
+
+ /**
+ * Get the state of the Windows OS. Possible values include: 'NonSysprepped', 'SysprepRequested', 'SysprepApplied'.
+ *
+ * @return the windowsOsState value
+ */
+ public WindowsOsState windowsOsState() {
+ return this.windowsOsState;
+ }
+
+ /**
+ * Set the state of the Windows OS. Possible values include: 'NonSysprepped', 'SysprepRequested', 'SysprepApplied'.
+ *
+ * @param windowsOsState the windowsOsState value to set
+ * @return the WindowsOsInfo object itself.
+ */
+ public WindowsOsInfo withWindowsOsState(WindowsOsState windowsOsState) {
+ this.windowsOsState = windowsOsState;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/WindowsOsState.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/WindowsOsState.java
new file mode 100644
index 000000000000..616ad681b397
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/WindowsOsState.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.v2015_05_21_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for WindowsOsState.
+ */
+public final class WindowsOsState extends ExpandableStringEnum {
+ /** Static value NonSysprepped for WindowsOsState. */
+ public static final WindowsOsState NON_SYSPREPPED = fromString("NonSysprepped");
+
+ /** Static value SysprepRequested for WindowsOsState. */
+ public static final WindowsOsState SYSPREP_REQUESTED = fromString("SysprepRequested");
+
+ /** Static value SysprepApplied for WindowsOsState. */
+ public static final WindowsOsState SYSPREP_APPLIED = fromString("SysprepApplied");
+
+ /**
+ * Creates or finds a WindowsOsState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding WindowsOsState
+ */
+ @JsonCreator
+ public static WindowsOsState fromString(String name) {
+ return fromString(name, WindowsOsState.class);
+ }
+
+ /**
+ * @return known WindowsOsState values
+ */
+ public static Collection values() {
+ return values(WindowsOsState.class);
+ }
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArmTemplateInfoImpl.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArmTemplateInfoImpl.java
new file mode 100644
index 000000000000..d4165f4fbca7
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArmTemplateInfoImpl.java
@@ -0,0 +1,36 @@
+/**
+ * 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.v2015_05_21_preview.implementation;
+
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.ArmTemplateInfo;
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+
+class ArmTemplateInfoImpl extends WrapperImpl implements ArmTemplateInfo {
+ private final DevTestLabsManager manager;
+ ArmTemplateInfoImpl(ArmTemplateInfoInner inner, DevTestLabsManager manager) {
+ super(inner);
+ this.manager = manager;
+ }
+
+ @Override
+ public DevTestLabsManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Object parameters() {
+ return this.inner().parameters();
+ }
+
+ @Override
+ public Object template() {
+ return this.inner().template();
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArmTemplateInfoInner.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArmTemplateInfoInner.java
new file mode 100644
index 000000000000..e581608ec573
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArmTemplateInfoInner.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.v2015_05_21_preview.implementation;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Information about a generated ARM template.
+ */
+public class ArmTemplateInfoInner {
+ /**
+ * The template's contents.
+ */
+ @JsonProperty(value = "template")
+ private Object template;
+
+ /**
+ * The parameters of the ARM template.
+ */
+ @JsonProperty(value = "parameters")
+ private Object parameters;
+
+ /**
+ * Get the template's contents.
+ *
+ * @return the template value
+ */
+ public Object template() {
+ return this.template;
+ }
+
+ /**
+ * Set the template's contents.
+ *
+ * @param template the template value to set
+ * @return the ArmTemplateInfoInner object itself.
+ */
+ public ArmTemplateInfoInner withTemplate(Object template) {
+ this.template = template;
+ return this;
+ }
+
+ /**
+ * Get the parameters of the ARM template.
+ *
+ * @return the parameters value
+ */
+ public Object parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Set the parameters of the ARM template.
+ *
+ * @param parameters the parameters value to set
+ * @return the ArmTemplateInfoInner object itself.
+ */
+ public ArmTemplateInfoInner withParameters(Object parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactImpl.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactImpl.java
new file mode 100644
index 000000000000..4406ccad78ff
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactImpl.java
@@ -0,0 +1,101 @@
+/**
+ * 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.v2015_05_21_preview.implementation;
+
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.Artifact;
+import com.microsoft.azure.arm.model.implementation.IndexableRefreshableWrapperImpl;
+import rx.Observable;
+import java.util.Map;
+
+class ArtifactImpl extends IndexableRefreshableWrapperImpl implements Artifact {
+ private final DevTestLabsManager manager;
+ private String resourceGroupName;
+ private String labName;
+ private String artifactSourceName;
+ private String name;
+
+ ArtifactImpl(ArtifactInner inner, DevTestLabsManager manager) {
+ super(null, inner);
+ this.manager = manager;
+ // set resource ancestor and positional variables
+ this.resourceGroupName = IdParsingUtils.getValueFromIdByName(inner.id(), "resourceGroups");
+ this.labName = IdParsingUtils.getValueFromIdByName(inner.id(), "labs");
+ this.artifactSourceName = IdParsingUtils.getValueFromIdByName(inner.id(), "artifactsources");
+ this.name = IdParsingUtils.getValueFromIdByName(inner.id(), "artifacts");
+ }
+
+ @Override
+ public DevTestLabsManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ protected Observable getInnerAsync() {
+ ArtifactsInner client = this.manager().inner().artifacts();
+ return client.getResourceAsync(this.resourceGroupName, this.labName, this.artifactSourceName, this.name);
+ }
+
+
+
+ @Override
+ public String description() {
+ return this.inner().description();
+ }
+
+ @Override
+ public String filePath() {
+ return this.inner().filePath();
+ }
+
+ @Override
+ public String icon() {
+ return this.inner().icon();
+ }
+
+ @Override
+ public String id() {
+ return this.inner().id();
+ }
+
+ @Override
+ public String location() {
+ return this.inner().location();
+ }
+
+ @Override
+ public String name() {
+ return this.inner().name();
+ }
+
+ @Override
+ public Object parameters() {
+ return this.inner().parameters();
+ }
+
+ @Override
+ public Map tags() {
+ return this.inner().getTags();
+ }
+
+ @Override
+ public String targetOsType() {
+ return this.inner().targetOsType();
+ }
+
+ @Override
+ public String title() {
+ return this.inner().title();
+ }
+
+ @Override
+ public String type() {
+ return this.inner().type();
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactInner.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactInner.java
new file mode 100644
index 000000000000..49d44ad63238
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactInner.java
@@ -0,0 +1,176 @@
+/**
+ * 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.v2015_05_21_preview.implementation;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.Resource;
+
+/**
+ * An artifact.
+ */
+@JsonFlatten
+public class ArtifactInner extends Resource {
+ /**
+ * The title of the artifact.
+ */
+ @JsonProperty(value = "properties.title")
+ private String title;
+
+ /**
+ * The description of the artifact.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /**
+ * The file path of the artifact.
+ */
+ @JsonProperty(value = "properties.filePath")
+ private String filePath;
+
+ /**
+ * The icon of the artifact.
+ */
+ @JsonProperty(value = "properties.icon")
+ private String icon;
+
+ /**
+ * Gets or sets the type of the target os.
+ */
+ @JsonProperty(value = "properties.targetOsType")
+ private String targetOsType;
+
+ /**
+ * The parameters of the artifact.
+ */
+ @JsonProperty(value = "properties.parameters")
+ private Object parameters;
+
+ /**
+ * Get the title of the artifact.
+ *
+ * @return the title value
+ */
+ public String title() {
+ return this.title;
+ }
+
+ /**
+ * Set the title of the artifact.
+ *
+ * @param title the title value to set
+ * @return the ArtifactInner object itself.
+ */
+ public ArtifactInner withTitle(String title) {
+ this.title = title;
+ return this;
+ }
+
+ /**
+ * Get the description of the artifact.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set the description of the artifact.
+ *
+ * @param description the description value to set
+ * @return the ArtifactInner object itself.
+ */
+ public ArtifactInner withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get the file path of the artifact.
+ *
+ * @return the filePath value
+ */
+ public String filePath() {
+ return this.filePath;
+ }
+
+ /**
+ * Set the file path of the artifact.
+ *
+ * @param filePath the filePath value to set
+ * @return the ArtifactInner object itself.
+ */
+ public ArtifactInner withFilePath(String filePath) {
+ this.filePath = filePath;
+ return this;
+ }
+
+ /**
+ * Get the icon of the artifact.
+ *
+ * @return the icon value
+ */
+ public String icon() {
+ return this.icon;
+ }
+
+ /**
+ * Set the icon of the artifact.
+ *
+ * @param icon the icon value to set
+ * @return the ArtifactInner object itself.
+ */
+ public ArtifactInner withIcon(String icon) {
+ this.icon = icon;
+ return this;
+ }
+
+ /**
+ * Get gets or sets the type of the target os.
+ *
+ * @return the targetOsType value
+ */
+ public String targetOsType() {
+ return this.targetOsType;
+ }
+
+ /**
+ * Set gets or sets the type of the target os.
+ *
+ * @param targetOsType the targetOsType value to set
+ * @return the ArtifactInner object itself.
+ */
+ public ArtifactInner withTargetOsType(String targetOsType) {
+ this.targetOsType = targetOsType;
+ return this;
+ }
+
+ /**
+ * Get the parameters of the artifact.
+ *
+ * @return the parameters value
+ */
+ public Object parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Set the parameters of the artifact.
+ *
+ * @param parameters the parameters value to set
+ * @return the ArtifactInner object itself.
+ */
+ public ArtifactInner withParameters(Object parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourceImpl.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourceImpl.java
new file mode 100644
index 000000000000..41cd2393a900
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourceImpl.java
@@ -0,0 +1,207 @@
+/**
+ * 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.v2015_05_21_preview.implementation;
+
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.ArtifactSource;
+import com.microsoft.azure.arm.model.implementation.CreatableUpdatableImpl;
+import rx.Observable;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.SourceControlType;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.EnableStatus;
+import java.util.Map;
+
+class ArtifactSourceImpl extends CreatableUpdatableImpl implements ArtifactSource, ArtifactSource.Definition, ArtifactSource.Update {
+ private final DevTestLabsManager manager;
+ private String resourceGroupName;
+ private String labName;
+ private String name;
+
+ ArtifactSourceImpl(String name, DevTestLabsManager manager) {
+ super(name, new ArtifactSourceInner());
+ this.manager = manager;
+ // Set resource name
+ this.name = name;
+ //
+ }
+
+ ArtifactSourceImpl(ArtifactSourceInner inner, DevTestLabsManager manager) {
+ super(inner.name(), inner);
+ this.manager = manager;
+ // Set resource name
+ this.name = inner.name();
+ // set resource ancestor and positional variables
+ this.resourceGroupName = IdParsingUtils.getValueFromIdByName(inner.id(), "resourceGroups");
+ this.labName = IdParsingUtils.getValueFromIdByName(inner.id(), "labs");
+ this.name = IdParsingUtils.getValueFromIdByName(inner.id(), "artifactsources");
+ //
+ }
+
+ @Override
+ public DevTestLabsManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Observable createResourceAsync() {
+ ArtifactSourcesInner client = this.manager().inner().artifactSources();
+ return client.createOrUpdateResourceAsync(this.resourceGroupName, this.labName, this.name, this.inner())
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ public Observable updateResourceAsync() {
+ ArtifactSourcesInner client = this.manager().inner().artifactSources();
+ return client.patchResourceAsync(this.resourceGroupName, this.labName, this.name, this.inner())
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ protected Observable getInnerAsync() {
+ ArtifactSourcesInner client = this.manager().inner().artifactSources();
+ return client.getResourceAsync(this.resourceGroupName, this.labName, this.name);
+ }
+
+ @Override
+ public boolean isInCreateMode() {
+ return this.inner().id() == null;
+ }
+
+
+ @Override
+ public String branchRef() {
+ return this.inner().branchRef();
+ }
+
+ @Override
+ public String displayName() {
+ return this.inner().displayName();
+ }
+
+ @Override
+ public String folderPath() {
+ return this.inner().folderPath();
+ }
+
+ @Override
+ public String id() {
+ return this.inner().id();
+ }
+
+ @Override
+ public String location() {
+ return this.inner().location();
+ }
+
+ @Override
+ public String name() {
+ return this.inner().name();
+ }
+
+ @Override
+ public String provisioningState() {
+ return this.inner().provisioningState();
+ }
+
+ @Override
+ public String securityToken() {
+ return this.inner().securityToken();
+ }
+
+ @Override
+ public SourceControlType sourceType() {
+ return this.inner().sourceType();
+ }
+
+ @Override
+ public EnableStatus status() {
+ return this.inner().status();
+ }
+
+ @Override
+ public Map tags() {
+ return this.inner().getTags();
+ }
+
+ @Override
+ public String type() {
+ return this.inner().type();
+ }
+
+ @Override
+ public String uri() {
+ return this.inner().uri();
+ }
+
+ @Override
+ public ArtifactSourceImpl withExistingLab(String resourceGroupName, String labName) {
+ this.resourceGroupName = resourceGroupName;
+ this.labName = labName;
+ return this;
+ }
+
+ @Override
+ public ArtifactSourceImpl withLocation(String location) {
+ this.inner().withLocation(location);
+ return this;
+ }
+
+ @Override
+ public ArtifactSourceImpl withBranchRef(String branchRef) {
+ this.inner().withBranchRef(branchRef);
+ return this;
+ }
+
+ @Override
+ public ArtifactSourceImpl withDisplayName(String displayName) {
+ this.inner().withDisplayName(displayName);
+ return this;
+ }
+
+ @Override
+ public ArtifactSourceImpl withFolderPath(String folderPath) {
+ this.inner().withFolderPath(folderPath);
+ return this;
+ }
+
+ @Override
+ public ArtifactSourceImpl withProvisioningState(String provisioningState) {
+ this.inner().withProvisioningState(provisioningState);
+ return this;
+ }
+
+ @Override
+ public ArtifactSourceImpl withSecurityToken(String securityToken) {
+ this.inner().withSecurityToken(securityToken);
+ return this;
+ }
+
+ @Override
+ public ArtifactSourceImpl withSourceType(SourceControlType sourceType) {
+ this.inner().withSourceType(sourceType);
+ return this;
+ }
+
+ @Override
+ public ArtifactSourceImpl withStatus(EnableStatus status) {
+ this.inner().withStatus(status);
+ return this;
+ }
+
+ @Override
+ public ArtifactSourceImpl withTags(Map tags) {
+ this.inner().withTags(tags);
+ return this;
+ }
+
+ @Override
+ public ArtifactSourceImpl withUri(String uri) {
+ this.inner().withUri(uri);
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourceInner.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourceInner.java
new file mode 100644
index 000000000000..a5a76c112013
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourceInner.java
@@ -0,0 +1,232 @@
+/**
+ * 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.v2015_05_21_preview.implementation;
+
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.SourceControlType;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.EnableStatus;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.Resource;
+
+/**
+ * Properties of an artifact source.
+ */
+@JsonFlatten
+public class ArtifactSourceInner extends Resource {
+ /**
+ * The display name of the artifact source.
+ */
+ @JsonProperty(value = "properties.displayName")
+ private String displayName;
+
+ /**
+ * The URI of the artifact source.
+ */
+ @JsonProperty(value = "properties.uri")
+ private String uri;
+
+ /**
+ * The type of the artifact source. Possible values include: 'VsoGit',
+ * 'GitHub'.
+ */
+ @JsonProperty(value = "properties.sourceType")
+ private SourceControlType sourceType;
+
+ /**
+ * The folder path of the artifact source.
+ */
+ @JsonProperty(value = "properties.folderPath")
+ private String folderPath;
+
+ /**
+ * The branch reference of the artifact source.
+ */
+ @JsonProperty(value = "properties.branchRef")
+ private String branchRef;
+
+ /**
+ * The security token of the artifact source.
+ */
+ @JsonProperty(value = "properties.securityToken")
+ private String securityToken;
+
+ /**
+ * The status of the artifact source. 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;
+
+ /**
+ * Get the display name of the artifact source.
+ *
+ * @return the displayName value
+ */
+ public String displayName() {
+ return this.displayName;
+ }
+
+ /**
+ * Set the display name of the artifact source.
+ *
+ * @param displayName the displayName value to set
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ /**
+ * Get the URI of the artifact source.
+ *
+ * @return the uri value
+ */
+ public String uri() {
+ return this.uri;
+ }
+
+ /**
+ * Set the URI of the artifact source.
+ *
+ * @param uri the uri value to set
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withUri(String uri) {
+ this.uri = uri;
+ return this;
+ }
+
+ /**
+ * Get the type of the artifact source. Possible values include: 'VsoGit', 'GitHub'.
+ *
+ * @return the sourceType value
+ */
+ public SourceControlType sourceType() {
+ return this.sourceType;
+ }
+
+ /**
+ * Set the type of the artifact source. Possible values include: 'VsoGit', 'GitHub'.
+ *
+ * @param sourceType the sourceType value to set
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withSourceType(SourceControlType sourceType) {
+ this.sourceType = sourceType;
+ return this;
+ }
+
+ /**
+ * Get the folder path of the artifact source.
+ *
+ * @return the folderPath value
+ */
+ public String folderPath() {
+ return this.folderPath;
+ }
+
+ /**
+ * Set the folder path of the artifact source.
+ *
+ * @param folderPath the folderPath value to set
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withFolderPath(String folderPath) {
+ this.folderPath = folderPath;
+ return this;
+ }
+
+ /**
+ * Get the branch reference of the artifact source.
+ *
+ * @return the branchRef value
+ */
+ public String branchRef() {
+ return this.branchRef;
+ }
+
+ /**
+ * Set the branch reference of the artifact source.
+ *
+ * @param branchRef the branchRef value to set
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withBranchRef(String branchRef) {
+ this.branchRef = branchRef;
+ return this;
+ }
+
+ /**
+ * Get the security token of the artifact source.
+ *
+ * @return the securityToken value
+ */
+ public String securityToken() {
+ return this.securityToken;
+ }
+
+ /**
+ * Set the security token of the artifact source.
+ *
+ * @param securityToken the securityToken value to set
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withSecurityToken(String securityToken) {
+ this.securityToken = securityToken;
+ return this;
+ }
+
+ /**
+ * Get the status of the artifact source. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @return the status value
+ */
+ public EnableStatus status() {
+ return this.status;
+ }
+
+ /**
+ * Set the status of the artifact source. Possible values include: 'Enabled', 'Disabled'.
+ *
+ * @param status the status value to set
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner 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 ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withProvisioningState(String provisioningState) {
+ this.provisioningState = provisioningState;
+ return this;
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourcesImpl.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourcesImpl.java
new file mode 100644
index 000000000000..b6676d0b1c66
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourcesImpl.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.v2015_05_21_preview.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.ArtifactSources;
+import rx.Completable;
+import rx.Observable;
+import rx.functions.Func1;
+import com.microsoft.azure.Page;
+import com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.ArtifactSource;
+
+class ArtifactSourcesImpl extends WrapperImpl implements ArtifactSources {
+ private final DevTestLabsManager manager;
+
+ ArtifactSourcesImpl(DevTestLabsManager manager) {
+ super(manager.inner().artifactSources());
+ this.manager = manager;
+ }
+
+ public DevTestLabsManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public ArtifactSourceImpl define(String name) {
+ return wrapModel(name);
+ }
+
+ private ArtifactSourceImpl wrapModel(ArtifactSourceInner inner) {
+ return new ArtifactSourceImpl(inner, manager());
+ }
+
+ private ArtifactSourceImpl wrapModel(String name) {
+ return new ArtifactSourceImpl(name, this.manager());
+ }
+
+ @Override
+ public Observable listAsync(final String resourceGroupName, final String labName) {
+ ArtifactSourcesInner client = this.inner();
+ return client.listAsync(resourceGroupName, labName)
+ .flatMapIterable(new Func1, Iterable>() {
+ @Override
+ public Iterable call(Page page) {
+ return page.items();
+ }
+ })
+ .map(new Func1() {
+ @Override
+ public ArtifactSource call(ArtifactSourceInner inner) {
+ return wrapModel(inner);
+ }
+ });
+ }
+
+ @Override
+ public Observable getResourceAsync(String resourceGroupName, String labName, String name) {
+ ArtifactSourcesInner client = this.inner();
+ return client.getResourceAsync(resourceGroupName, labName, name)
+ .flatMap(new Func1>() {
+ @Override
+ public Observable call(ArtifactSourceInner inner) {
+ if (inner == null) {
+ return Observable.empty();
+ } else {
+ return Observable.just((ArtifactSource)wrapModel(inner));
+ }
+ }
+ });
+ }
+
+ @Override
+ public Completable deleteResourceAsync(String resourceGroupName, String labName, String name) {
+ ArtifactSourcesInner client = this.inner();
+ return client.deleteResourceAsync(resourceGroupName, labName, name).toCompletable();
+ }
+
+}
diff --git a/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourcesInner.java b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourcesInner.java
new file mode 100644
index 000000000000..63cef047ef37
--- /dev/null
+++ b/sdk/devtestlabs/mgmt-v2015_05_21_preview/src/main/java/com/microsoft/azure/management/devtestlabs/v2015_05_21_preview/implementation/ArtifactSourcesInner.java
@@ -0,0 +1,848 @@
+/**
+ * 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.v2015_05_21_preview.implementation;
+
+import retrofit2.Retrofit;
+import com.google.common.reflect.TypeToken;
+import com.microsoft.azure.AzureServiceFuture;
+import com.microsoft.azure.CloudException;
+import com.microsoft.azure.ListOperationCallback;
+import com.microsoft.azure.Page;
+import com.microsoft.azure.PagedList;
+import com.microsoft.rest.ServiceCallback;
+import com.microsoft.rest.ServiceFuture;
+import com.microsoft.rest.ServiceResponse;
+import com.microsoft.rest.Validator;
+import java.io.IOException;
+import java.util.List;
+import okhttp3.ResponseBody;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.Header;
+import retrofit2.http.Headers;
+import retrofit2.http.HTTP;
+import retrofit2.http.PATCH;
+import retrofit2.http.Path;
+import retrofit2.http.PUT;
+import retrofit2.http.Query;
+import retrofit2.http.Url;
+import retrofit2.Response;
+import rx.functions.Func1;
+import rx.Observable;
+
+/**
+ * An instance of this class provides access to all the operations defined
+ * in ArtifactSources.
+ */
+public class ArtifactSourcesInner {
+ /** The Retrofit service to perform REST calls. */
+ private ArtifactSourcesService service;
+ /** The service client containing this operation class. */
+ private DevTestLabsClientImpl client;
+
+ /**
+ * Initializes an instance of ArtifactSourcesInner.
+ *
+ * @param retrofit the Retrofit instance built from a Retrofit Builder.
+ * @param client the instance of the service client containing this operation class.
+ */
+ public ArtifactSourcesInner(Retrofit retrofit, DevTestLabsClientImpl client) {
+ this.service = retrofit.create(ArtifactSourcesService.class);
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for ArtifactSources to be
+ * used by Retrofit to perform actually REST calls.
+ */
+ interface ArtifactSourcesService {
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.ArtifactSources list" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources")
+ Observable> list(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("labName") String labName, @Query("$filter") String filter, @Query("$top") Integer top, @Query("$orderBy") String orderBy, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.ArtifactSources getResource" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}")
+ Observable> getResource(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("labName") String labName, @Path("name") String name, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.ArtifactSources createOrUpdateResource" })
+ @PUT("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}")
+ Observable> createOrUpdateResource(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("labName") String labName, @Path("name") String name, @Body ArtifactSourceInner artifactSource, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.ArtifactSources deleteResource" })
+ @HTTP(path = "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}", method = "DELETE", hasBody = true)
+ Observable> deleteResource(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("labName") String labName, @Path("name") String name, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.ArtifactSources patchResource" })
+ @PATCH("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}")
+ Observable> patchResource(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("labName") String labName, @Path("name") String name, @Body ArtifactSourceInner artifactSource, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.devtestlabs.v2015_05_21_preview.ArtifactSources listNext" })
+ @GET
+ Observable> listNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ }
+
+ /**
+ * List artifact sources.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws CloudException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the PagedList<ArtifactSourceInner> object if successful.
+ */
+ public PagedList list(final String resourceGroupName, final String labName) {
+ ServiceResponse> response = listSinglePageAsync(resourceGroupName, labName).toBlocking().single();
+ return new PagedList(response.body()) {
+ @Override
+ public Page nextPage(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink).toBlocking().single().body();
+ }
+ };
+ }
+
+ /**
+ * List artifact sources.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture> listAsync(final String resourceGroupName, final String labName, final ListOperationCallback serviceCallback) {
+ return AzureServiceFuture.fromPageResponse(
+ listSinglePageAsync(resourceGroupName, labName),
+ new Func1>>>() {
+ @Override
+ public Observable>> call(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink);
+ }
+ },
+ serviceCallback);
+ }
+
+ /**
+ * List artifact sources.
+ *
+ * @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 to the PagedList<ArtifactSourceInner> object
+ */
+ public Observable> listAsync(final String resourceGroupName, final String labName) {
+ return listWithServiceResponseAsync(resourceGroupName, labName)
+ .map(new Func1>, Page>() {
+ @Override
+ public Page call(ServiceResponse> response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * List artifact sources.
+ *
+ * @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 to the PagedList<ArtifactSourceInner> object
+ */
+ public Observable>> listWithServiceResponseAsync(final String resourceGroupName, final String labName) {
+ return listSinglePageAsync(resourceGroupName, labName)
+ .concatMap(new Func1>, Observable>>>() {
+ @Override
+ public Observable>> call(ServiceResponse> page) {
+ String nextPageLink = page.body().nextPageLink();
+ if (nextPageLink == null) {
+ return Observable.just(page);
+ }
+ return Observable.just(page).concatWith(listNextWithServiceResponseAsync(nextPageLink));
+ }
+ });
+ }
+
+ /**
+ * List artifact sources.
+ *
+ * @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 PagedList<ArtifactSourceInner> object wrapped in {@link ServiceResponse} if successful.
+ */
+ public Observable>> listSinglePageAsync(final String resourceGroupName, final String labName) {
+ if (this.client.subscriptionId() == null) {
+ throw new IllegalArgumentException("Parameter this.client.subscriptionId() is required and cannot be null.");
+ }
+ if (resourceGroupName == null) {
+ throw new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.");
+ }
+ if (labName == null) {
+ throw new IllegalArgumentException("Parameter labName is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ final String filter = null;
+ final Integer top = null;
+ final String orderBy = null;
+ return service.list(this.client.subscriptionId(), resourceGroupName, labName, filter, top, orderBy, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>>() {
+ @Override
+ public Observable>> call(Response response) {
+ try {
+ ServiceResponse