diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/pom.xml b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/pom.xml
new file mode 100644
index 0000000000000..b3af00adacb96
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/pom.xml
@@ -0,0 +1,135 @@
+
+
+ 4.0.0
+ com.microsoft.azure.desktopvirtualization.v2019_12_10_preview
+
+ com.microsoft.azure
+ azure-arm-parent
+ 1.1.0
+ ../../../pom.management.xml
+
+ azure-mgmt-desktopvirtualization
+ 1.0.0-beta
+ jar
+ Microsoft Azure SDK for DesktopVirtualization Management
+ This package contains Microsoft DesktopVirtualization 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
+
+
+ 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/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Application.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Application.java
new file mode 100644
index 0000000000000..8b0ff322edd31
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Application.java
@@ -0,0 +1,343 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.ApplicationInner;
+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.desktopvirtualization.v2019_12_10_preview.implementation.DesktopVirtualizationManager;
+import java.util.Map;
+
+/**
+ * Type representing Application.
+ */
+public interface Application extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the commandLineArguments value.
+ */
+ String commandLineArguments();
+
+ /**
+ * @return the commandLineSetting value.
+ */
+ CommandLineSetting commandLineSetting();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the filePath value.
+ */
+ String filePath();
+
+ /**
+ * @return the friendlyName value.
+ */
+ String friendlyName();
+
+ /**
+ * @return the iconContent value.
+ */
+ byte[] iconContent();
+
+ /**
+ * @return the iconHash value.
+ */
+ String iconHash();
+
+ /**
+ * @return the iconIndex value.
+ */
+ Integer iconIndex();
+
+ /**
+ * @return the iconPath value.
+ */
+ String iconPath();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the showInPortal value.
+ */
+ Boolean showInPortal();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The entirety of the Application definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithApplicationGroup, DefinitionStages.WithCommandLineSetting, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of Application definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a Application definition.
+ */
+ interface Blank extends WithApplicationGroup {
+ }
+
+ /**
+ * The stage of the application definition allowing to specify ApplicationGroup.
+ */
+ interface WithApplicationGroup {
+ /**
+ * Specifies resourceGroupName, applicationGroupName.
+ * @param resourceGroupName The name of the resource group. The name is case insensitive
+ * @param applicationGroupName The name of the application group
+ * @return the next definition stage
+ */
+ WithCommandLineSetting withExistingApplicationGroup(String resourceGroupName, String applicationGroupName);
+ }
+
+ /**
+ * The stage of the application definition allowing to specify CommandLineSetting.
+ */
+ interface WithCommandLineSetting {
+ /**
+ * Specifies commandLineSetting.
+ * @param commandLineSetting Specifies whether this published application can be launched with command line arguments provided by the client, command line arguments specified at publish time, or no command line arguments at all. Possible values include: 'DoNotAllow', 'Allow', 'Require'
+ * @return the next definition stage
+ */
+ WithCreate withCommandLineSetting(CommandLineSetting commandLineSetting);
+ }
+
+ /**
+ * The stage of the application definition allowing to specify CommandLineArguments.
+ */
+ interface WithCommandLineArguments {
+ /**
+ * Specifies commandLineArguments.
+ * @param commandLineArguments Command Line Arguments for Application
+ * @return the next definition stage
+ */
+ WithCreate withCommandLineArguments(String commandLineArguments);
+ }
+
+ /**
+ * The stage of the application definition allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description Description of Application
+ * @return the next definition stage
+ */
+ WithCreate withDescription(String description);
+ }
+
+ /**
+ * The stage of the application definition allowing to specify FilePath.
+ */
+ interface WithFilePath {
+ /**
+ * Specifies filePath.
+ * @param filePath Specifies a path for the executable file for the application
+ * @return the next definition stage
+ */
+ WithCreate withFilePath(String filePath);
+ }
+
+ /**
+ * The stage of the application definition allowing to specify FriendlyName.
+ */
+ interface WithFriendlyName {
+ /**
+ * Specifies friendlyName.
+ * @param friendlyName Friendly name of Application
+ * @return the next definition stage
+ */
+ WithCreate withFriendlyName(String friendlyName);
+ }
+
+ /**
+ * The stage of the application definition allowing to specify IconIndex.
+ */
+ interface WithIconIndex {
+ /**
+ * Specifies iconIndex.
+ * @param iconIndex Index of the icon
+ * @return the next definition stage
+ */
+ WithCreate withIconIndex(Integer iconIndex);
+ }
+
+ /**
+ * The stage of the application definition allowing to specify IconPath.
+ */
+ interface WithIconPath {
+ /**
+ * Specifies iconPath.
+ * @param iconPath Path to icon
+ * @return the next definition stage
+ */
+ WithCreate withIconPath(String iconPath);
+ }
+
+ /**
+ * The stage of the application definition allowing to specify ShowInPortal.
+ */
+ interface WithShowInPortal {
+ /**
+ * Specifies showInPortal.
+ * @param showInPortal Specifies whether to show the RemoteApp program in the RD Web Access server
+ * @return the next definition stage
+ */
+ WithCreate withShowInPortal(Boolean showInPortal);
+ }
+
+ /**
+ * 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.WithCommandLineArguments, DefinitionStages.WithDescription, DefinitionStages.WithFilePath, DefinitionStages.WithFriendlyName, DefinitionStages.WithIconIndex, DefinitionStages.WithIconPath, DefinitionStages.WithShowInPortal {
+ }
+ }
+ /**
+ * The template for a Application update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithCommandLineArguments, UpdateStages.WithCommandLineSetting, UpdateStages.WithDescription, UpdateStages.WithFilePath, UpdateStages.WithFriendlyName, UpdateStages.WithIconIndex, UpdateStages.WithIconPath, UpdateStages.WithShowInPortal, UpdateStages.WithTags {
+ }
+
+ /**
+ * Grouping of Application update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the application update allowing to specify CommandLineArguments.
+ */
+ interface WithCommandLineArguments {
+ /**
+ * Specifies commandLineArguments.
+ * @param commandLineArguments Command Line Arguments for Application
+ * @return the next update stage
+ */
+ Update withCommandLineArguments(String commandLineArguments);
+ }
+
+ /**
+ * The stage of the application update allowing to specify CommandLineSetting.
+ */
+ interface WithCommandLineSetting {
+ /**
+ * Specifies commandLineSetting.
+ * @param commandLineSetting Specifies whether this published application can be launched with command line arguments provided by the client, command line arguments specified at publish time, or no command line arguments at all. Possible values include: 'DoNotAllow', 'Allow', 'Require'
+ * @return the next update stage
+ */
+ Update withCommandLineSetting(CommandLineSetting commandLineSetting);
+ }
+
+ /**
+ * The stage of the application update allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description Description of Application
+ * @return the next update stage
+ */
+ Update withDescription(String description);
+ }
+
+ /**
+ * The stage of the application update allowing to specify FilePath.
+ */
+ interface WithFilePath {
+ /**
+ * Specifies filePath.
+ * @param filePath Specifies a path for the executable file for the application
+ * @return the next update stage
+ */
+ Update withFilePath(String filePath);
+ }
+
+ /**
+ * The stage of the application update allowing to specify FriendlyName.
+ */
+ interface WithFriendlyName {
+ /**
+ * Specifies friendlyName.
+ * @param friendlyName Friendly name of Application
+ * @return the next update stage
+ */
+ Update withFriendlyName(String friendlyName);
+ }
+
+ /**
+ * The stage of the application update allowing to specify IconIndex.
+ */
+ interface WithIconIndex {
+ /**
+ * Specifies iconIndex.
+ * @param iconIndex Index of the icon
+ * @return the next update stage
+ */
+ Update withIconIndex(Integer iconIndex);
+ }
+
+ /**
+ * The stage of the application update allowing to specify IconPath.
+ */
+ interface WithIconPath {
+ /**
+ * Specifies iconPath.
+ * @param iconPath Path to icon
+ * @return the next update stage
+ */
+ Update withIconPath(String iconPath);
+ }
+
+ /**
+ * The stage of the application update allowing to specify ShowInPortal.
+ */
+ interface WithShowInPortal {
+ /**
+ * Specifies showInPortal.
+ * @param showInPortal Specifies whether to show the RemoteApp program in the RD Web Access server
+ * @return the next update stage
+ */
+ Update withShowInPortal(Boolean showInPortal);
+ }
+
+ /**
+ * The stage of the application update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags tags to be updated
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroup.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroup.java
new file mode 100644
index 0000000000000..4f1792c3f3815
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroup.java
@@ -0,0 +1,165 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_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.desktopvirtualization.v2019_12_10_preview.implementation.DesktopVirtualizationManager;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.ApplicationGroupInner;
+
+/**
+ * Type representing ApplicationGroup.
+ */
+public interface ApplicationGroup extends HasInner, Resource, GroupableResourceCore, HasResourceGroup, Refreshable, Updatable, HasManager {
+ /**
+ * @return the applicationGroupType value.
+ */
+ ApplicationGroupType applicationGroupType();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the friendlyName value.
+ */
+ String friendlyName();
+
+ /**
+ * @return the hostPoolArmPath value.
+ */
+ String hostPoolArmPath();
+
+ /**
+ * @return the workspaceArmPath value.
+ */
+ String workspaceArmPath();
+
+ /**
+ * The entirety of the ApplicationGroup definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithGroup, DefinitionStages.WithApplicationGroupType, DefinitionStages.WithHostPoolArmPath, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of ApplicationGroup definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a ApplicationGroup definition.
+ */
+ interface Blank extends GroupableResourceCore.DefinitionWithRegion {
+ }
+
+ /**
+ * The stage of the ApplicationGroup definition allowing to specify the resource group.
+ */
+ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup {
+ }
+
+ /**
+ * The stage of the applicationgroup definition allowing to specify ApplicationGroupType.
+ */
+ interface WithApplicationGroupType {
+ /**
+ * Specifies applicationGroupType.
+ * @param applicationGroupType Resource Type of ApplicationGroup. Possible values include: 'RemoteApp', 'Desktop'
+ * @return the next definition stage
+*/
+ WithHostPoolArmPath withApplicationGroupType(ApplicationGroupType applicationGroupType);
+ }
+
+ /**
+ * The stage of the applicationgroup definition allowing to specify HostPoolArmPath.
+ */
+ interface WithHostPoolArmPath {
+ /**
+ * Specifies hostPoolArmPath.
+ * @param hostPoolArmPath HostPool arm path of ApplicationGroup
+ * @return the next definition stage
+*/
+ WithCreate withHostPoolArmPath(String hostPoolArmPath);
+ }
+
+ /**
+ * The stage of the applicationgroup definition allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description Description of ApplicationGroup
+ * @return the next definition stage
+ */
+ WithCreate withDescription(String description);
+ }
+
+ /**
+ * The stage of the applicationgroup definition allowing to specify FriendlyName.
+ */
+ interface WithFriendlyName {
+ /**
+ * Specifies friendlyName.
+ * @param friendlyName Friendly name of ApplicationGroup
+ * @return the next definition stage
+ */
+ WithCreate withFriendlyName(String friendlyName);
+ }
+
+ /**
+ * 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.WithDescription, DefinitionStages.WithFriendlyName {
+ }
+ }
+ /**
+ * The template for a ApplicationGroup update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithDescription, UpdateStages.WithFriendlyName {
+ }
+
+ /**
+ * Grouping of ApplicationGroup update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the applicationgroup update allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description Description of ApplicationGroup
+ * @return the next update stage
+ */
+ Update withDescription(String description);
+ }
+
+ /**
+ * The stage of the applicationgroup update allowing to specify FriendlyName.
+ */
+ interface WithFriendlyName {
+ /**
+ * Specifies friendlyName.
+ * @param friendlyName Friendly name of ApplicationGroup
+ * @return the next update stage
+ */
+ Update withFriendlyName(String friendlyName);
+ }
+
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroupPatch.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroupPatch.java
new file mode 100644
index 0000000000000..2c717f121c4ec
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroupPatch.java
@@ -0,0 +1,99 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * ApplicationGroup properties that can be patched.
+ */
+@JsonFlatten
+public class ApplicationGroupPatch extends ProxyResource {
+ /**
+ * tags to be updated.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * Description of ApplicationGroup.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /**
+ * Friendly name of ApplicationGroup.
+ */
+ @JsonProperty(value = "properties.friendlyName")
+ private String friendlyName;
+
+ /**
+ * Get tags to be updated.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set tags to be updated.
+ *
+ * @param tags the tags value to set
+ * @return the ApplicationGroupPatch object itself.
+ */
+ public ApplicationGroupPatch withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ /**
+ * Get description of ApplicationGroup.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set description of ApplicationGroup.
+ *
+ * @param description the description value to set
+ * @return the ApplicationGroupPatch object itself.
+ */
+ public ApplicationGroupPatch withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get friendly name of ApplicationGroup.
+ *
+ * @return the friendlyName value
+ */
+ public String friendlyName() {
+ return this.friendlyName;
+ }
+
+ /**
+ * Set friendly name of ApplicationGroup.
+ *
+ * @param friendlyName the friendlyName value to set
+ * @return the ApplicationGroupPatch object itself.
+ */
+ public ApplicationGroupPatch withFriendlyName(String friendlyName) {
+ this.friendlyName = friendlyName;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroupType.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroupType.java
new file mode 100644
index 0000000000000..88d8d19b09103
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroupType.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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationGroupType.
+ */
+public final class ApplicationGroupType extends ExpandableStringEnum {
+ /** Static value RemoteApp for ApplicationGroupType. */
+ public static final ApplicationGroupType REMOTE_APP = fromString("RemoteApp");
+
+ /** Static value Desktop for ApplicationGroupType. */
+ public static final ApplicationGroupType DESKTOP = fromString("Desktop");
+
+ /**
+ * Creates or finds a ApplicationGroupType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationGroupType
+ */
+ @JsonCreator
+ public static ApplicationGroupType fromString(String name) {
+ return fromString(name, ApplicationGroupType.class);
+ }
+
+ /**
+ * @return known ApplicationGroupType values
+ */
+ public static Collection values() {
+ return values(ApplicationGroupType.class);
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroups.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroups.java
new file mode 100644
index 0000000000000..bcc2facc1899c
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationGroups.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.desktopvirtualization.v2019_12_10_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 com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.ApplicationGroupsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ApplicationGroups.
+ */
+public interface ApplicationGroups extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner {
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationPatch.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationPatch.java
new file mode 100644
index 0000000000000..ed894c8590d4a
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationPatch.java
@@ -0,0 +1,258 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Application properties that can be patched.
+ */
+@JsonFlatten
+public class ApplicationPatch {
+ /**
+ * tags to be updated.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * Description of Application.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /**
+ * Friendly name of Application.
+ */
+ @JsonProperty(value = "properties.friendlyName")
+ private String friendlyName;
+
+ /**
+ * Specifies a path for the executable file for the application.
+ */
+ @JsonProperty(value = "properties.filePath")
+ private String filePath;
+
+ /**
+ * Specifies whether this published application can be launched with
+ * command line arguments provided by the client, command line arguments
+ * specified at publish time, or no command line arguments at all. Possible
+ * values include: 'DoNotAllow', 'Allow', 'Require'.
+ */
+ @JsonProperty(value = "properties.commandLineSetting")
+ private CommandLineSetting commandLineSetting;
+
+ /**
+ * Command Line Arguments for Application.
+ */
+ @JsonProperty(value = "properties.commandLineArguments")
+ private String commandLineArguments;
+
+ /**
+ * Specifies whether to show the RemoteApp program in the RD Web Access
+ * server.
+ */
+ @JsonProperty(value = "properties.showInPortal")
+ private Boolean showInPortal;
+
+ /**
+ * Path to icon.
+ */
+ @JsonProperty(value = "properties.iconPath")
+ private String iconPath;
+
+ /**
+ * Index of the icon.
+ */
+ @JsonProperty(value = "properties.iconIndex")
+ private Integer iconIndex;
+
+ /**
+ * Get tags to be updated.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set tags to be updated.
+ *
+ * @param tags the tags value to set
+ * @return the ApplicationPatch object itself.
+ */
+ public ApplicationPatch withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ /**
+ * Get description of Application.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set description of Application.
+ *
+ * @param description the description value to set
+ * @return the ApplicationPatch object itself.
+ */
+ public ApplicationPatch withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get friendly name of Application.
+ *
+ * @return the friendlyName value
+ */
+ public String friendlyName() {
+ return this.friendlyName;
+ }
+
+ /**
+ * Set friendly name of Application.
+ *
+ * @param friendlyName the friendlyName value to set
+ * @return the ApplicationPatch object itself.
+ */
+ public ApplicationPatch withFriendlyName(String friendlyName) {
+ this.friendlyName = friendlyName;
+ return this;
+ }
+
+ /**
+ * Get specifies a path for the executable file for the application.
+ *
+ * @return the filePath value
+ */
+ public String filePath() {
+ return this.filePath;
+ }
+
+ /**
+ * Set specifies a path for the executable file for the application.
+ *
+ * @param filePath the filePath value to set
+ * @return the ApplicationPatch object itself.
+ */
+ public ApplicationPatch withFilePath(String filePath) {
+ this.filePath = filePath;
+ return this;
+ }
+
+ /**
+ * Get specifies whether this published application can be launched with command line arguments provided by the client, command line arguments specified at publish time, or no command line arguments at all. Possible values include: 'DoNotAllow', 'Allow', 'Require'.
+ *
+ * @return the commandLineSetting value
+ */
+ public CommandLineSetting commandLineSetting() {
+ return this.commandLineSetting;
+ }
+
+ /**
+ * Set specifies whether this published application can be launched with command line arguments provided by the client, command line arguments specified at publish time, or no command line arguments at all. Possible values include: 'DoNotAllow', 'Allow', 'Require'.
+ *
+ * @param commandLineSetting the commandLineSetting value to set
+ * @return the ApplicationPatch object itself.
+ */
+ public ApplicationPatch withCommandLineSetting(CommandLineSetting commandLineSetting) {
+ this.commandLineSetting = commandLineSetting;
+ return this;
+ }
+
+ /**
+ * Get command Line Arguments for Application.
+ *
+ * @return the commandLineArguments value
+ */
+ public String commandLineArguments() {
+ return this.commandLineArguments;
+ }
+
+ /**
+ * Set command Line Arguments for Application.
+ *
+ * @param commandLineArguments the commandLineArguments value to set
+ * @return the ApplicationPatch object itself.
+ */
+ public ApplicationPatch withCommandLineArguments(String commandLineArguments) {
+ this.commandLineArguments = commandLineArguments;
+ return this;
+ }
+
+ /**
+ * Get specifies whether to show the RemoteApp program in the RD Web Access server.
+ *
+ * @return the showInPortal value
+ */
+ public Boolean showInPortal() {
+ return this.showInPortal;
+ }
+
+ /**
+ * Set specifies whether to show the RemoteApp program in the RD Web Access server.
+ *
+ * @param showInPortal the showInPortal value to set
+ * @return the ApplicationPatch object itself.
+ */
+ public ApplicationPatch withShowInPortal(Boolean showInPortal) {
+ this.showInPortal = showInPortal;
+ return this;
+ }
+
+ /**
+ * Get path to icon.
+ *
+ * @return the iconPath value
+ */
+ public String iconPath() {
+ return this.iconPath;
+ }
+
+ /**
+ * Set path to icon.
+ *
+ * @param iconPath the iconPath value to set
+ * @return the ApplicationPatch object itself.
+ */
+ public ApplicationPatch withIconPath(String iconPath) {
+ this.iconPath = iconPath;
+ return this;
+ }
+
+ /**
+ * Get index of the icon.
+ *
+ * @return the iconIndex value
+ */
+ public Integer iconIndex() {
+ return this.iconIndex;
+ }
+
+ /**
+ * Set index of the icon.
+ *
+ * @param iconIndex the iconIndex value to set
+ * @return the ApplicationPatch object itself.
+ */
+ public ApplicationPatch withIconIndex(Integer iconIndex) {
+ this.iconIndex = iconIndex;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationType.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationType.java
new file mode 100644
index 0000000000000..3056d8720631e
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ApplicationType.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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ApplicationType.
+ */
+public final class ApplicationType extends ExpandableStringEnum {
+ /** Static value RemoteApp for ApplicationType. */
+ public static final ApplicationType REMOTE_APP = fromString("RemoteApp");
+
+ /** Static value Desktop for ApplicationType. */
+ public static final ApplicationType DESKTOP = fromString("Desktop");
+
+ /**
+ * Creates or finds a ApplicationType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ApplicationType
+ */
+ @JsonCreator
+ public static ApplicationType fromString(String name) {
+ return fromString(name, ApplicationType.class);
+ }
+
+ /**
+ * @return known ApplicationType values
+ */
+ public static Collection values() {
+ return values(ApplicationType.class);
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Applications.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Applications.java
new file mode 100644
index 0000000000000..3895260b05055
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Applications.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.desktopvirtualization.v2019_12_10_preview;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.ApplicationsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Applications.
+ */
+public interface Applications extends SupportsCreating, HasInner {
+ /**
+ * Get an application.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @param applicationName The name of the application within the specified application group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String applicationGroupName, String applicationName);
+
+ /**
+ * List applications.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String applicationGroupName);
+
+ /**
+ * Remove an application.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @param applicationName The name of the application within the specified application group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String applicationGroupName, String applicationName);
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/AzureEntityResource.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/AzureEntityResource.java
new file mode 100644
index 0000000000000..fe7eacd7c044d
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/AzureEntityResource.java
@@ -0,0 +1,34 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * The resource model definition for a Azure Resource Manager resource with an
+ * etag.
+ */
+public class AzureEntityResource extends ProxyResource {
+ /**
+ * Resource Etag.
+ */
+ @JsonProperty(value = "etag", access = JsonProperty.Access.WRITE_ONLY)
+ private String etag;
+
+ /**
+ * Get resource Etag.
+ *
+ * @return the etag value
+ */
+ public String etag() {
+ return this.etag;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/CloudError.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/CloudError.java
new file mode 100644
index 0000000000000..7262f8fbe0e8f
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/CloudError.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.desktopvirtualization.v2019_12_10_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Error response of an operation failure.
+ */
+public class CloudError {
+ /**
+ * Error code.
+ */
+ @JsonProperty(value = "code")
+ private String code;
+
+ /**
+ * Error message indicating why the operation failed.
+ */
+ @JsonProperty(value = "message")
+ private String message;
+
+ /**
+ * Get error code.
+ *
+ * @return the code value
+ */
+ public String code() {
+ return this.code;
+ }
+
+ /**
+ * Set error code.
+ *
+ * @param code the code value to set
+ * @return the CloudError object itself.
+ */
+ public CloudError withCode(String code) {
+ this.code = code;
+ return this;
+ }
+
+ /**
+ * Get error message indicating why the operation failed.
+ *
+ * @return the message value
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Set error message indicating why the operation failed.
+ *
+ * @param message the message value to set
+ * @return the CloudError object itself.
+ */
+ public CloudError withMessage(String message) {
+ this.message = message;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/CommandLineSetting.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/CommandLineSetting.java
new file mode 100644
index 0000000000000..a8766b7e85603
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/CommandLineSetting.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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for CommandLineSetting.
+ */
+public final class CommandLineSetting extends ExpandableStringEnum {
+ /** Static value DoNotAllow for CommandLineSetting. */
+ public static final CommandLineSetting DO_NOT_ALLOW = fromString("DoNotAllow");
+
+ /** Static value Allow for CommandLineSetting. */
+ public static final CommandLineSetting ALLOW = fromString("Allow");
+
+ /** Static value Require for CommandLineSetting. */
+ public static final CommandLineSetting REQUIRE = fromString("Require");
+
+ /**
+ * Creates or finds a CommandLineSetting from its string representation.
+ * @param name a name to look for
+ * @return the corresponding CommandLineSetting
+ */
+ @JsonCreator
+ public static CommandLineSetting fromString(String name) {
+ return fromString(name, CommandLineSetting.class);
+ }
+
+ /**
+ * @return known CommandLineSetting values
+ */
+ public static Collection values() {
+ return values(CommandLineSetting.class);
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Desktop.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Desktop.java
new file mode 100644
index 0000000000000..12adf89aa6de5
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Desktop.java
@@ -0,0 +1,107 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.DesktopInner;
+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.resources.models.HasManager;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.DesktopVirtualizationManager;
+import java.util.Map;
+
+/**
+ * Type representing Desktop.
+ */
+public interface Desktop extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the friendlyName value.
+ */
+ String friendlyName();
+
+ /**
+ * @return the iconContent value.
+ */
+ byte[] iconContent();
+
+ /**
+ * @return the iconHash value.
+ */
+ String iconHash();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * The template for a Desktop update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithDescription, UpdateStages.WithFriendlyName, UpdateStages.WithTags {
+ }
+
+ /**
+ * Grouping of Desktop update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the desktop update allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description Description of Desktop
+ * @return the next update stage
+ */
+ Update withDescription(String description);
+ }
+
+ /**
+ * The stage of the desktop update allowing to specify FriendlyName.
+ */
+ interface WithFriendlyName {
+ /**
+ * Specifies friendlyName.
+ * @param friendlyName Friendly name of Desktop
+ * @return the next update stage
+ */
+ Update withFriendlyName(String friendlyName);
+ }
+
+ /**
+ * The stage of the desktop update allowing to specify Tags.
+ */
+ interface WithTags {
+ /**
+ * Specifies tags.
+ * @param tags tags to be updated
+ * @return the next update stage
+ */
+ Update withTags(Map tags);
+ }
+
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/DesktopList.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/DesktopList.java
new file mode 100644
index 0000000000000..19a45c76eb8fb
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/DesktopList.java
@@ -0,0 +1,32 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.DesktopVirtualizationManager;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.DesktopListInner;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.DesktopInner;
+import java.util.List;
+
+/**
+ * Type representing DesktopList.
+ */
+public interface DesktopList extends HasInner, HasManager {
+ /**
+ * @return the nextLink value.
+ */
+ String nextLink();
+
+ /**
+ * @return the value value.
+ */
+ List value();
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/DesktopPatch.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/DesktopPatch.java
new file mode 100644
index 0000000000000..b883a1d5faf6e
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/DesktopPatch.java
@@ -0,0 +1,98 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Desktop properties that can be patched.
+ */
+@JsonFlatten
+public class DesktopPatch {
+ /**
+ * tags to be updated.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * Description of Desktop.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /**
+ * Friendly name of Desktop.
+ */
+ @JsonProperty(value = "properties.friendlyName")
+ private String friendlyName;
+
+ /**
+ * Get tags to be updated.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set tags to be updated.
+ *
+ * @param tags the tags value to set
+ * @return the DesktopPatch object itself.
+ */
+ public DesktopPatch withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ /**
+ * Get description of Desktop.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set description of Desktop.
+ *
+ * @param description the description value to set
+ * @return the DesktopPatch object itself.
+ */
+ public DesktopPatch withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get friendly name of Desktop.
+ *
+ * @return the friendlyName value
+ */
+ public String friendlyName() {
+ return this.friendlyName;
+ }
+
+ /**
+ * Set friendly name of Desktop.
+ *
+ * @param friendlyName the friendlyName value to set
+ * @return the DesktopPatch object itself.
+ */
+ public DesktopPatch withFriendlyName(String friendlyName) {
+ this.friendlyName = friendlyName;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Desktops.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Desktops.java
new file mode 100644
index 0000000000000..0ddd3418881f3
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Desktops.java
@@ -0,0 +1,40 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import rx.Observable;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.DesktopsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Desktops.
+ */
+public interface Desktops extends HasInner {
+ /**
+ * List desktops.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(String resourceGroupName, String applicationGroupName);
+
+ /**
+ * Get a desktop.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @param desktopName The name of the desktop within the specified desktop group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String applicationGroupName, String desktopName);
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPool.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPool.java
new file mode 100644
index 0000000000000..11b5271f482c7
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPool.java
@@ -0,0 +1,427 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_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.desktopvirtualization.v2019_12_10_preview.implementation.DesktopVirtualizationManager;
+import java.util.List;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.HostPoolInner;
+
+/**
+ * Type representing HostPool.
+ */
+public interface HostPool extends HasInner, Resource, GroupableResourceCore, HasResourceGroup, Refreshable, Updatable, HasManager {
+ /**
+ * @return the applicationGroupReferences value.
+ */
+ List applicationGroupReferences();
+
+ /**
+ * @return the customRdpProperty value.
+ */
+ String customRdpProperty();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the friendlyName value.
+ */
+ String friendlyName();
+
+ /**
+ * @return the hostPoolType value.
+ */
+ HostPoolType hostPoolType();
+
+ /**
+ * @return the loadBalancerType value.
+ */
+ LoadBalancerType loadBalancerType();
+
+ /**
+ * @return the maxSessionLimit value.
+ */
+ Integer maxSessionLimit();
+
+ /**
+ * @return the personalDesktopAssignmentType value.
+ */
+ PersonalDesktopAssignmentType personalDesktopAssignmentType();
+
+ /**
+ * @return the preferredAppGroupType value.
+ */
+ PreferredAppGroupType preferredAppGroupType();
+
+ /**
+ * @return the registrationInfo value.
+ */
+ RegistrationInfo registrationInfo();
+
+ /**
+ * @return the ring value.
+ */
+ Integer ring();
+
+ /**
+ * @return the ssoContext value.
+ */
+ String ssoContext();
+
+ /**
+ * @return the validationEnvironment value.
+ */
+ Boolean validationEnvironment();
+
+ /**
+ * @return the vmTemplate value.
+ */
+ String vmTemplate();
+
+ /**
+ * The entirety of the HostPool definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithGroup, DefinitionStages.WithHostPoolType, DefinitionStages.WithLoadBalancerType, DefinitionStages.WithPreferredAppGroupType, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of HostPool definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a HostPool definition.
+ */
+ interface Blank extends GroupableResourceCore.DefinitionWithRegion {
+ }
+
+ /**
+ * The stage of the HostPool definition allowing to specify the resource group.
+ */
+ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup {
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify HostPoolType.
+ */
+ interface WithHostPoolType {
+ /**
+ * Specifies hostPoolType.
+ * @param hostPoolType HostPool type for desktop. Possible values include: 'Personal', 'Pooled'
+ * @return the next definition stage
+*/
+ WithLoadBalancerType withHostPoolType(HostPoolType hostPoolType);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify LoadBalancerType.
+ */
+ interface WithLoadBalancerType {
+ /**
+ * Specifies loadBalancerType.
+ * @param loadBalancerType The type of the load balancer. Possible values include: 'BreadthFirst', 'DepthFirst', 'Persistent'
+ * @return the next definition stage
+*/
+ WithPreferredAppGroupType withLoadBalancerType(LoadBalancerType loadBalancerType);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify PreferredAppGroupType.
+ */
+ interface WithPreferredAppGroupType {
+ /**
+ * Specifies preferredAppGroupType.
+ * @param preferredAppGroupType The type of preferred application group type, default to Desktop Application Group. Possible values include: 'None', 'Desktop', 'RailApplications'
+ * @return the next definition stage
+*/
+ WithCreate withPreferredAppGroupType(PreferredAppGroupType preferredAppGroupType);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify CustomRdpProperty.
+ */
+ interface WithCustomRdpProperty {
+ /**
+ * Specifies customRdpProperty.
+ * @param customRdpProperty Custom rdp property of HostPool
+ * @return the next definition stage
+ */
+ WithCreate withCustomRdpProperty(String customRdpProperty);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description Description of HostPool
+ * @return the next definition stage
+ */
+ WithCreate withDescription(String description);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify FriendlyName.
+ */
+ interface WithFriendlyName {
+ /**
+ * Specifies friendlyName.
+ * @param friendlyName Friendly name of HostPool
+ * @return the next definition stage
+ */
+ WithCreate withFriendlyName(String friendlyName);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify MaxSessionLimit.
+ */
+ interface WithMaxSessionLimit {
+ /**
+ * Specifies maxSessionLimit.
+ * @param maxSessionLimit The max session limit of HostPool
+ * @return the next definition stage
+ */
+ WithCreate withMaxSessionLimit(Integer maxSessionLimit);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify PersonalDesktopAssignmentType.
+ */
+ interface WithPersonalDesktopAssignmentType {
+ /**
+ * Specifies personalDesktopAssignmentType.
+ * @param personalDesktopAssignmentType PersonalDesktopAssignment type for HostPool. Possible values include: 'Automatic', 'Direct'
+ * @return the next definition stage
+ */
+ WithCreate withPersonalDesktopAssignmentType(PersonalDesktopAssignmentType personalDesktopAssignmentType);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify RegistrationInfo.
+ */
+ interface WithRegistrationInfo {
+ /**
+ * Specifies registrationInfo.
+ * @param registrationInfo The registration info of HostPool
+ * @return the next definition stage
+ */
+ WithCreate withRegistrationInfo(RegistrationInfo registrationInfo);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify Ring.
+ */
+ interface WithRing {
+ /**
+ * Specifies ring.
+ * @param ring The ring number of HostPool
+ * @return the next definition stage
+ */
+ WithCreate withRing(Integer ring);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify SsoContext.
+ */
+ interface WithSsoContext {
+ /**
+ * Specifies ssoContext.
+ * @param ssoContext Path to keyvault containing ssoContext secret
+ * @return the next definition stage
+ */
+ WithCreate withSsoContext(String ssoContext);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify ValidationEnvironment.
+ */
+ interface WithValidationEnvironment {
+ /**
+ * Specifies validationEnvironment.
+ * @param validationEnvironment Is validation environment
+ * @return the next definition stage
+ */
+ WithCreate withValidationEnvironment(Boolean validationEnvironment);
+ }
+
+ /**
+ * The stage of the hostpool definition allowing to specify VmTemplate.
+ */
+ interface WithVmTemplate {
+ /**
+ * Specifies vmTemplate.
+ * @param vmTemplate VM template for sessionhosts configuration within hostpool
+ * @return the next definition stage
+ */
+ WithCreate withVmTemplate(String vmTemplate);
+ }
+
+ /**
+ * 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.WithCustomRdpProperty, DefinitionStages.WithDescription, DefinitionStages.WithFriendlyName, DefinitionStages.WithMaxSessionLimit, DefinitionStages.WithPersonalDesktopAssignmentType, DefinitionStages.WithRegistrationInfo, DefinitionStages.WithRing, DefinitionStages.WithSsoContext, DefinitionStages.WithValidationEnvironment, DefinitionStages.WithVmTemplate {
+ }
+ }
+ /**
+ * The template for a HostPool update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithCustomRdpProperty, UpdateStages.WithDescription, UpdateStages.WithFriendlyName, UpdateStages.WithLoadBalancerType, UpdateStages.WithMaxSessionLimit, UpdateStages.WithPersonalDesktopAssignmentType, UpdateStages.WithPreferredAppGroupType, UpdateStages.WithRegistrationInfo, UpdateStages.WithRing, UpdateStages.WithSsoContext, UpdateStages.WithValidationEnvironment {
+ }
+
+ /**
+ * Grouping of HostPool update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the hostpool update allowing to specify CustomRdpProperty.
+ */
+ interface WithCustomRdpProperty {
+ /**
+ * Specifies customRdpProperty.
+ * @param customRdpProperty Custom rdp property of HostPool
+ * @return the next update stage
+ */
+ Update withCustomRdpProperty(String customRdpProperty);
+ }
+
+ /**
+ * The stage of the hostpool update allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description Description of HostPool
+ * @return the next update stage
+ */
+ Update withDescription(String description);
+ }
+
+ /**
+ * The stage of the hostpool update allowing to specify FriendlyName.
+ */
+ interface WithFriendlyName {
+ /**
+ * Specifies friendlyName.
+ * @param friendlyName Friendly name of HostPool
+ * @return the next update stage
+ */
+ Update withFriendlyName(String friendlyName);
+ }
+
+ /**
+ * The stage of the hostpool update allowing to specify LoadBalancerType.
+ */
+ interface WithLoadBalancerType {
+ /**
+ * Specifies loadBalancerType.
+ * @param loadBalancerType The type of the load balancer. Possible values include: 'BreadthFirst', 'DepthFirst', 'Persistent'
+ * @return the next update stage
+ */
+ Update withLoadBalancerType(LoadBalancerType loadBalancerType);
+ }
+
+ /**
+ * The stage of the hostpool update allowing to specify MaxSessionLimit.
+ */
+ interface WithMaxSessionLimit {
+ /**
+ * Specifies maxSessionLimit.
+ * @param maxSessionLimit The max session limit of HostPool
+ * @return the next update stage
+ */
+ Update withMaxSessionLimit(Integer maxSessionLimit);
+ }
+
+ /**
+ * The stage of the hostpool update allowing to specify PersonalDesktopAssignmentType.
+ */
+ interface WithPersonalDesktopAssignmentType {
+ /**
+ * Specifies personalDesktopAssignmentType.
+ * @param personalDesktopAssignmentType PersonalDesktopAssignment type for HostPool. Possible values include: 'Automatic', 'Direct'
+ * @return the next update stage
+ */
+ Update withPersonalDesktopAssignmentType(PersonalDesktopAssignmentType personalDesktopAssignmentType);
+ }
+
+ /**
+ * The stage of the hostpool update allowing to specify PreferredAppGroupType.
+ */
+ interface WithPreferredAppGroupType {
+ /**
+ * Specifies preferredAppGroupType.
+ * @param preferredAppGroupType The type of preferred application group type, default to Desktop Application Group. Possible values include: 'None', 'Desktop', 'RailApplications'
+ * @return the next update stage
+ */
+ Update withPreferredAppGroupType(PreferredAppGroupType preferredAppGroupType);
+ }
+
+ /**
+ * The stage of the hostpool update allowing to specify RegistrationInfo.
+ */
+ interface WithRegistrationInfo {
+ /**
+ * Specifies registrationInfo.
+ * @param registrationInfo The registration info of HostPool
+ * @return the next update stage
+ */
+ Update withRegistrationInfo(RegistrationInfoPatch registrationInfo);
+ }
+
+ /**
+ * The stage of the hostpool update allowing to specify Ring.
+ */
+ interface WithRing {
+ /**
+ * Specifies ring.
+ * @param ring The ring number of HostPool
+ * @return the next update stage
+ */
+ Update withRing(Integer ring);
+ }
+
+ /**
+ * The stage of the hostpool update allowing to specify SsoContext.
+ */
+ interface WithSsoContext {
+ /**
+ * Specifies ssoContext.
+ * @param ssoContext Path to keyvault containing ssoContext secret
+ * @return the next update stage
+ */
+ Update withSsoContext(String ssoContext);
+ }
+
+ /**
+ * The stage of the hostpool update allowing to specify ValidationEnvironment.
+ */
+ interface WithValidationEnvironment {
+ /**
+ * Specifies validationEnvironment.
+ * @param validationEnvironment Is validation environment
+ * @return the next update stage
+ */
+ Update withValidationEnvironment(Boolean validationEnvironment);
+ }
+
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPoolPatch.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPoolPatch.java
new file mode 100644
index 0000000000000..d63d8623b53c9
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPoolPatch.java
@@ -0,0 +1,337 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * HostPool properties that can be patched.
+ */
+@JsonFlatten
+public class HostPoolPatch extends ProxyResource {
+ /**
+ * tags to be updated.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * Friendly name of HostPool.
+ */
+ @JsonProperty(value = "properties.friendlyName")
+ private String friendlyName;
+
+ /**
+ * Description of HostPool.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /**
+ * Custom rdp property of HostPool.
+ */
+ @JsonProperty(value = "properties.customRdpProperty")
+ private String customRdpProperty;
+
+ /**
+ * The max session limit of HostPool.
+ */
+ @JsonProperty(value = "properties.maxSessionLimit")
+ private Integer maxSessionLimit;
+
+ /**
+ * PersonalDesktopAssignment type for HostPool. Possible values include:
+ * 'Automatic', 'Direct'.
+ */
+ @JsonProperty(value = "properties.personalDesktopAssignmentType")
+ private PersonalDesktopAssignmentType personalDesktopAssignmentType;
+
+ /**
+ * The type of the load balancer. Possible values include: 'BreadthFirst',
+ * 'DepthFirst', 'Persistent'.
+ */
+ @JsonProperty(value = "properties.loadBalancerType")
+ private LoadBalancerType loadBalancerType;
+
+ /**
+ * The ring number of HostPool.
+ */
+ @JsonProperty(value = "properties.ring")
+ private Integer ring;
+
+ /**
+ * Is validation environment.
+ */
+ @JsonProperty(value = "properties.validationEnvironment")
+ private Boolean validationEnvironment;
+
+ /**
+ * The registration info of HostPool.
+ */
+ @JsonProperty(value = "properties.registrationInfo")
+ private RegistrationInfoPatch registrationInfo;
+
+ /**
+ * Path to keyvault containing ssoContext secret.
+ */
+ @JsonProperty(value = "properties.ssoContext")
+ private String ssoContext;
+
+ /**
+ * The type of preferred application group type, default to Desktop
+ * Application Group. Possible values include: 'None', 'Desktop',
+ * 'RailApplications'.
+ */
+ @JsonProperty(value = "properties.preferredAppGroupType")
+ private PreferredAppGroupType preferredAppGroupType;
+
+ /**
+ * Get tags to be updated.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set tags to be updated.
+ *
+ * @param tags the tags value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ /**
+ * Get friendly name of HostPool.
+ *
+ * @return the friendlyName value
+ */
+ public String friendlyName() {
+ return this.friendlyName;
+ }
+
+ /**
+ * Set friendly name of HostPool.
+ *
+ * @param friendlyName the friendlyName value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withFriendlyName(String friendlyName) {
+ this.friendlyName = friendlyName;
+ return this;
+ }
+
+ /**
+ * Get description of HostPool.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set description of HostPool.
+ *
+ * @param description the description value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get custom rdp property of HostPool.
+ *
+ * @return the customRdpProperty value
+ */
+ public String customRdpProperty() {
+ return this.customRdpProperty;
+ }
+
+ /**
+ * Set custom rdp property of HostPool.
+ *
+ * @param customRdpProperty the customRdpProperty value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withCustomRdpProperty(String customRdpProperty) {
+ this.customRdpProperty = customRdpProperty;
+ return this;
+ }
+
+ /**
+ * Get the max session limit of HostPool.
+ *
+ * @return the maxSessionLimit value
+ */
+ public Integer maxSessionLimit() {
+ return this.maxSessionLimit;
+ }
+
+ /**
+ * Set the max session limit of HostPool.
+ *
+ * @param maxSessionLimit the maxSessionLimit value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withMaxSessionLimit(Integer maxSessionLimit) {
+ this.maxSessionLimit = maxSessionLimit;
+ return this;
+ }
+
+ /**
+ * Get personalDesktopAssignment type for HostPool. Possible values include: 'Automatic', 'Direct'.
+ *
+ * @return the personalDesktopAssignmentType value
+ */
+ public PersonalDesktopAssignmentType personalDesktopAssignmentType() {
+ return this.personalDesktopAssignmentType;
+ }
+
+ /**
+ * Set personalDesktopAssignment type for HostPool. Possible values include: 'Automatic', 'Direct'.
+ *
+ * @param personalDesktopAssignmentType the personalDesktopAssignmentType value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withPersonalDesktopAssignmentType(PersonalDesktopAssignmentType personalDesktopAssignmentType) {
+ this.personalDesktopAssignmentType = personalDesktopAssignmentType;
+ return this;
+ }
+
+ /**
+ * Get the type of the load balancer. Possible values include: 'BreadthFirst', 'DepthFirst', 'Persistent'.
+ *
+ * @return the loadBalancerType value
+ */
+ public LoadBalancerType loadBalancerType() {
+ return this.loadBalancerType;
+ }
+
+ /**
+ * Set the type of the load balancer. Possible values include: 'BreadthFirst', 'DepthFirst', 'Persistent'.
+ *
+ * @param loadBalancerType the loadBalancerType value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withLoadBalancerType(LoadBalancerType loadBalancerType) {
+ this.loadBalancerType = loadBalancerType;
+ return this;
+ }
+
+ /**
+ * Get the ring number of HostPool.
+ *
+ * @return the ring value
+ */
+ public Integer ring() {
+ return this.ring;
+ }
+
+ /**
+ * Set the ring number of HostPool.
+ *
+ * @param ring the ring value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withRing(Integer ring) {
+ this.ring = ring;
+ return this;
+ }
+
+ /**
+ * Get is validation environment.
+ *
+ * @return the validationEnvironment value
+ */
+ public Boolean validationEnvironment() {
+ return this.validationEnvironment;
+ }
+
+ /**
+ * Set is validation environment.
+ *
+ * @param validationEnvironment the validationEnvironment value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withValidationEnvironment(Boolean validationEnvironment) {
+ this.validationEnvironment = validationEnvironment;
+ return this;
+ }
+
+ /**
+ * Get the registration info of HostPool.
+ *
+ * @return the registrationInfo value
+ */
+ public RegistrationInfoPatch registrationInfo() {
+ return this.registrationInfo;
+ }
+
+ /**
+ * Set the registration info of HostPool.
+ *
+ * @param registrationInfo the registrationInfo value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withRegistrationInfo(RegistrationInfoPatch registrationInfo) {
+ this.registrationInfo = registrationInfo;
+ return this;
+ }
+
+ /**
+ * Get path to keyvault containing ssoContext secret.
+ *
+ * @return the ssoContext value
+ */
+ public String ssoContext() {
+ return this.ssoContext;
+ }
+
+ /**
+ * Set path to keyvault containing ssoContext secret.
+ *
+ * @param ssoContext the ssoContext value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withSsoContext(String ssoContext) {
+ this.ssoContext = ssoContext;
+ return this;
+ }
+
+ /**
+ * Get the type of preferred application group type, default to Desktop Application Group. Possible values include: 'None', 'Desktop', 'RailApplications'.
+ *
+ * @return the preferredAppGroupType value
+ */
+ public PreferredAppGroupType preferredAppGroupType() {
+ return this.preferredAppGroupType;
+ }
+
+ /**
+ * Set the type of preferred application group type, default to Desktop Application Group. Possible values include: 'None', 'Desktop', 'RailApplications'.
+ *
+ * @param preferredAppGroupType the preferredAppGroupType value to set
+ * @return the HostPoolPatch object itself.
+ */
+ public HostPoolPatch withPreferredAppGroupType(PreferredAppGroupType preferredAppGroupType) {
+ this.preferredAppGroupType = preferredAppGroupType;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPoolType.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPoolType.java
new file mode 100644
index 0000000000000..c3ecf5833ce28
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPoolType.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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for HostPoolType.
+ */
+public final class HostPoolType extends ExpandableStringEnum {
+ /** Static value Personal for HostPoolType. */
+ public static final HostPoolType PERSONAL = fromString("Personal");
+
+ /** Static value Pooled for HostPoolType. */
+ public static final HostPoolType POOLED = fromString("Pooled");
+
+ /**
+ * Creates or finds a HostPoolType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding HostPoolType
+ */
+ @JsonCreator
+ public static HostPoolType fromString(String name) {
+ return fromString(name, HostPoolType.class);
+ }
+
+ /**
+ * @return known HostPoolType values
+ */
+ public static Collection values() {
+ return values(HostPoolType.class);
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPools.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPools.java
new file mode 100644
index 0000000000000..57845ece1c9aa
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/HostPools.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.desktopvirtualization.v2019_12_10_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 com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.HostPoolsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing HostPools.
+ */
+public interface HostPools extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner {
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/LoadBalancerType.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/LoadBalancerType.java
new file mode 100644
index 0000000000000..bbe3c86b65ca7
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/LoadBalancerType.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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for LoadBalancerType.
+ */
+public final class LoadBalancerType extends ExpandableStringEnum {
+ /** Static value BreadthFirst for LoadBalancerType. */
+ public static final LoadBalancerType BREADTH_FIRST = fromString("BreadthFirst");
+
+ /** Static value DepthFirst for LoadBalancerType. */
+ public static final LoadBalancerType DEPTH_FIRST = fromString("DepthFirst");
+
+ /** Static value Persistent for LoadBalancerType. */
+ public static final LoadBalancerType PERSISTENT = fromString("Persistent");
+
+ /**
+ * Creates or finds a LoadBalancerType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding LoadBalancerType
+ */
+ @JsonCreator
+ public static LoadBalancerType fromString(String name) {
+ return fromString(name, LoadBalancerType.class);
+ }
+
+ /**
+ * @return known LoadBalancerType values
+ */
+ public static Collection values() {
+ return values(LoadBalancerType.class);
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Operations.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Operations.java
new file mode 100644
index 0000000000000..5e0be2c1e1af8
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Operations.java
@@ -0,0 +1,27 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import rx.Observable;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.OperationsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Operations.
+ */
+public interface Operations extends HasInner {
+ /**
+ * List all of the available operations the Desktop Virtualization resource provider supports.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync();
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/PersonalDesktopAssignmentType.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/PersonalDesktopAssignmentType.java
new file mode 100644
index 0000000000000..27ef6a1419d5b
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/PersonalDesktopAssignmentType.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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for PersonalDesktopAssignmentType.
+ */
+public final class PersonalDesktopAssignmentType extends ExpandableStringEnum {
+ /** Static value Automatic for PersonalDesktopAssignmentType. */
+ public static final PersonalDesktopAssignmentType AUTOMATIC = fromString("Automatic");
+
+ /** Static value Direct for PersonalDesktopAssignmentType. */
+ public static final PersonalDesktopAssignmentType DIRECT = fromString("Direct");
+
+ /**
+ * Creates or finds a PersonalDesktopAssignmentType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding PersonalDesktopAssignmentType
+ */
+ @JsonCreator
+ public static PersonalDesktopAssignmentType fromString(String name) {
+ return fromString(name, PersonalDesktopAssignmentType.class);
+ }
+
+ /**
+ * @return known PersonalDesktopAssignmentType values
+ */
+ public static Collection values() {
+ return values(PersonalDesktopAssignmentType.class);
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/PreferredAppGroupType.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/PreferredAppGroupType.java
new file mode 100644
index 0000000000000..e14ca18367123
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/PreferredAppGroupType.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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for PreferredAppGroupType.
+ */
+public final class PreferredAppGroupType extends ExpandableStringEnum {
+ /** Static value None for PreferredAppGroupType. */
+ public static final PreferredAppGroupType NONE = fromString("None");
+
+ /** Static value Desktop for PreferredAppGroupType. */
+ public static final PreferredAppGroupType DESKTOP = fromString("Desktop");
+
+ /** Static value RailApplications for PreferredAppGroupType. */
+ public static final PreferredAppGroupType RAIL_APPLICATIONS = fromString("RailApplications");
+
+ /**
+ * Creates or finds a PreferredAppGroupType from its string representation.
+ * @param name a name to look for
+ * @return the corresponding PreferredAppGroupType
+ */
+ @JsonCreator
+ public static PreferredAppGroupType fromString(String name) {
+ return fromString(name, PreferredAppGroupType.class);
+ }
+
+ /**
+ * @return known PreferredAppGroupType values
+ */
+ public static Collection values() {
+ return values(PreferredAppGroupType.class);
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/RegistrationInfo.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/RegistrationInfo.java
new file mode 100644
index 0000000000000..3619e3c790929
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/RegistrationInfo.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.desktopvirtualization.v2019_12_10_preview;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Represents a RegistrationInfo definition.
+ */
+public class RegistrationInfo {
+ /**
+ * Expiration time of registration token.
+ */
+ @JsonProperty(value = "expirationTime")
+ private DateTime expirationTime;
+
+ /**
+ * The registration token base64 encoded string.
+ */
+ @JsonProperty(value = "token")
+ private String token;
+
+ /**
+ * The type of resetting the token. Possible values include: 'Delete',
+ * 'None', 'Update'.
+ */
+ @JsonProperty(value = "registrationTokenOperation")
+ private RegistrationTokenOperation registrationTokenOperation;
+
+ /**
+ * Get expiration time of registration token.
+ *
+ * @return the expirationTime value
+ */
+ public DateTime expirationTime() {
+ return this.expirationTime;
+ }
+
+ /**
+ * Set expiration time of registration token.
+ *
+ * @param expirationTime the expirationTime value to set
+ * @return the RegistrationInfo object itself.
+ */
+ public RegistrationInfo withExpirationTime(DateTime expirationTime) {
+ this.expirationTime = expirationTime;
+ return this;
+ }
+
+ /**
+ * Get the registration token base64 encoded string.
+ *
+ * @return the token value
+ */
+ public String token() {
+ return this.token;
+ }
+
+ /**
+ * Set the registration token base64 encoded string.
+ *
+ * @param token the token value to set
+ * @return the RegistrationInfo object itself.
+ */
+ public RegistrationInfo withToken(String token) {
+ this.token = token;
+ return this;
+ }
+
+ /**
+ * Get the type of resetting the token. Possible values include: 'Delete', 'None', 'Update'.
+ *
+ * @return the registrationTokenOperation value
+ */
+ public RegistrationTokenOperation registrationTokenOperation() {
+ return this.registrationTokenOperation;
+ }
+
+ /**
+ * Set the type of resetting the token. Possible values include: 'Delete', 'None', 'Update'.
+ *
+ * @param registrationTokenOperation the registrationTokenOperation value to set
+ * @return the RegistrationInfo object itself.
+ */
+ public RegistrationInfo withRegistrationTokenOperation(RegistrationTokenOperation registrationTokenOperation) {
+ this.registrationTokenOperation = registrationTokenOperation;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/RegistrationInfoPatch.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/RegistrationInfoPatch.java
new file mode 100644
index 0000000000000..57d00613791a5
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/RegistrationInfoPatch.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.desktopvirtualization.v2019_12_10_preview;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Represents a RegistrationInfo definition.
+ */
+public class RegistrationInfoPatch {
+ /**
+ * Expiration time of registration token.
+ */
+ @JsonProperty(value = "expirationTime")
+ private DateTime expirationTime;
+
+ /**
+ * The type of resetting the token. Possible values include: 'Delete',
+ * 'None', 'Update'.
+ */
+ @JsonProperty(value = "registrationTokenOperation")
+ private RegistrationTokenOperation registrationTokenOperation;
+
+ /**
+ * Get expiration time of registration token.
+ *
+ * @return the expirationTime value
+ */
+ public DateTime expirationTime() {
+ return this.expirationTime;
+ }
+
+ /**
+ * Set expiration time of registration token.
+ *
+ * @param expirationTime the expirationTime value to set
+ * @return the RegistrationInfoPatch object itself.
+ */
+ public RegistrationInfoPatch withExpirationTime(DateTime expirationTime) {
+ this.expirationTime = expirationTime;
+ return this;
+ }
+
+ /**
+ * Get the type of resetting the token. Possible values include: 'Delete', 'None', 'Update'.
+ *
+ * @return the registrationTokenOperation value
+ */
+ public RegistrationTokenOperation registrationTokenOperation() {
+ return this.registrationTokenOperation;
+ }
+
+ /**
+ * Set the type of resetting the token. Possible values include: 'Delete', 'None', 'Update'.
+ *
+ * @param registrationTokenOperation the registrationTokenOperation value to set
+ * @return the RegistrationInfoPatch object itself.
+ */
+ public RegistrationInfoPatch withRegistrationTokenOperation(RegistrationTokenOperation registrationTokenOperation) {
+ this.registrationTokenOperation = registrationTokenOperation;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/RegistrationTokenOperation.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/RegistrationTokenOperation.java
new file mode 100644
index 0000000000000..f23aa28950cf1
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/RegistrationTokenOperation.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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for RegistrationTokenOperation.
+ */
+public final class RegistrationTokenOperation extends ExpandableStringEnum {
+ /** Static value Delete for RegistrationTokenOperation. */
+ public static final RegistrationTokenOperation DELETE = fromString("Delete");
+
+ /** Static value None for RegistrationTokenOperation. */
+ public static final RegistrationTokenOperation NONE = fromString("None");
+
+ /** Static value Update for RegistrationTokenOperation. */
+ public static final RegistrationTokenOperation UPDATE = fromString("Update");
+
+ /**
+ * Creates or finds a RegistrationTokenOperation from its string representation.
+ * @param name a name to look for
+ * @return the corresponding RegistrationTokenOperation
+ */
+ @JsonCreator
+ public static RegistrationTokenOperation fromString(String name) {
+ return fromString(name, RegistrationTokenOperation.class);
+ }
+
+ /**
+ * @return known RegistrationTokenOperation values
+ */
+ public static Collection values() {
+ return values(RegistrationTokenOperation.class);
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ResourceProviderOperation.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ResourceProviderOperation.java
new file mode 100644
index 0000000000000..b32d2fb4f4b7d
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ResourceProviderOperation.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.desktopvirtualization.v2019_12_10_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Supported operation of this resource provider.
+ */
+public class ResourceProviderOperation {
+ /**
+ * Operation name, in format of {provider}/{resource}/{operation}.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * Display metadata associated with the operation.
+ */
+ @JsonProperty(value = "display")
+ private ResourceProviderOperationDisplay display;
+
+ /**
+ * Get operation name, in format of {provider}/{resource}/{operation}.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set operation name, in format of {provider}/{resource}/{operation}.
+ *
+ * @param name the name value to set
+ * @return the ResourceProviderOperation object itself.
+ */
+ public ResourceProviderOperation withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get display metadata associated with the operation.
+ *
+ * @return the display value
+ */
+ public ResourceProviderOperationDisplay display() {
+ return this.display;
+ }
+
+ /**
+ * Set display metadata associated with the operation.
+ *
+ * @param display the display value to set
+ * @return the ResourceProviderOperation object itself.
+ */
+ public ResourceProviderOperation withDisplay(ResourceProviderOperationDisplay display) {
+ this.display = display;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ResourceProviderOperationDisplay.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ResourceProviderOperationDisplay.java
new file mode 100644
index 0000000000000..3808540b66f21
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ResourceProviderOperationDisplay.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.desktopvirtualization.v2019_12_10_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Display metadata associated with the operation.
+ */
+public class ResourceProviderOperationDisplay {
+ /**
+ * Resource provider: Microsoft Desktop Virtualization.
+ */
+ @JsonProperty(value = "provider")
+ private String provider;
+
+ /**
+ * Resource on which the operation is performed.
+ */
+ @JsonProperty(value = "resource")
+ private String resource;
+
+ /**
+ * Type of operation: get, read, delete, etc.
+ */
+ @JsonProperty(value = "operation")
+ private String operation;
+
+ /**
+ * Description of this operation.
+ */
+ @JsonProperty(value = "description")
+ private String description;
+
+ /**
+ * Get resource provider: Microsoft Desktop Virtualization.
+ *
+ * @return the provider value
+ */
+ public String provider() {
+ return this.provider;
+ }
+
+ /**
+ * Set resource provider: Microsoft Desktop Virtualization.
+ *
+ * @param provider the provider value to set
+ * @return the ResourceProviderOperationDisplay object itself.
+ */
+ public ResourceProviderOperationDisplay withProvider(String provider) {
+ this.provider = provider;
+ return this;
+ }
+
+ /**
+ * Get resource on which the operation is performed.
+ *
+ * @return the resource value
+ */
+ public String resource() {
+ return this.resource;
+ }
+
+ /**
+ * Set resource on which the operation is performed.
+ *
+ * @param resource the resource value to set
+ * @return the ResourceProviderOperationDisplay object itself.
+ */
+ public ResourceProviderOperationDisplay withResource(String resource) {
+ this.resource = resource;
+ return this;
+ }
+
+ /**
+ * Get type of operation: get, read, delete, etc.
+ *
+ * @return the operation value
+ */
+ public String operation() {
+ return this.operation;
+ }
+
+ /**
+ * Set type of operation: get, read, delete, etc.
+ *
+ * @param operation the operation value to set
+ * @return the ResourceProviderOperationDisplay object itself.
+ */
+ public ResourceProviderOperationDisplay withOperation(String operation) {
+ this.operation = operation;
+ return this;
+ }
+
+ /**
+ * Get description of this operation.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set description of this operation.
+ *
+ * @param description the description value to set
+ * @return the ResourceProviderOperationDisplay object itself.
+ */
+ public ResourceProviderOperationDisplay withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ResourceProviderOperationList.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ResourceProviderOperationList.java
new file mode 100644
index 0000000000000..2d7e1774cddcf
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/ResourceProviderOperationList.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.desktopvirtualization.v2019_12_10_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.DesktopVirtualizationManager;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.ResourceProviderOperationListInner;
+import java.util.List;
+
+/**
+ * Type representing ResourceProviderOperationList.
+ */
+public interface ResourceProviderOperationList extends HasInner, HasManager {
+ /**
+ * @return the value value.
+ */
+ List value();
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SendMessage.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SendMessage.java
new file mode 100644
index 0000000000000..8e2a54a06619f
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SendMessage.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.desktopvirtualization.v2019_12_10_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Represents message sent to a UserSession.
+ */
+public class SendMessage {
+ /**
+ * Title of message.
+ */
+ @JsonProperty(value = "messageTitle")
+ private String messageTitle;
+
+ /**
+ * Body of message.
+ */
+ @JsonProperty(value = "messageBody")
+ private String messageBody;
+
+ /**
+ * Get title of message.
+ *
+ * @return the messageTitle value
+ */
+ public String messageTitle() {
+ return this.messageTitle;
+ }
+
+ /**
+ * Set title of message.
+ *
+ * @param messageTitle the messageTitle value to set
+ * @return the SendMessage object itself.
+ */
+ public SendMessage withMessageTitle(String messageTitle) {
+ this.messageTitle = messageTitle;
+ return this;
+ }
+
+ /**
+ * Get body of message.
+ *
+ * @return the messageBody value
+ */
+ public String messageBody() {
+ return this.messageBody;
+ }
+
+ /**
+ * Set body of message.
+ *
+ * @param messageBody the messageBody value to set
+ * @return the SendMessage object itself.
+ */
+ public SendMessage withMessageBody(String messageBody) {
+ this.messageBody = messageBody;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionHost.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionHost.java
new file mode 100644
index 0000000000000..47e14a2e1ea0b
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionHost.java
@@ -0,0 +1,145 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.SessionHostInner;
+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.resources.models.HasManager;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.DesktopVirtualizationManager;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing SessionHost.
+ */
+public interface SessionHost extends HasInner, Indexable, Refreshable, Updatable, HasManager {
+ /**
+ * @return the agentVersion value.
+ */
+ String agentVersion();
+
+ /**
+ * @return the allowNewSession value.
+ */
+ Boolean allowNewSession();
+
+ /**
+ * @return the assignedUser value.
+ */
+ String assignedUser();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the lastHeartBeat value.
+ */
+ DateTime lastHeartBeat();
+
+ /**
+ * @return the lastUpdateTime value.
+ */
+ DateTime lastUpdateTime();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the osVersion value.
+ */
+ String osVersion();
+
+ /**
+ * @return the resourceId value.
+ */
+ String resourceId();
+
+ /**
+ * @return the sessions value.
+ */
+ Integer sessions();
+
+ /**
+ * @return the status value.
+ */
+ Status status();
+
+ /**
+ * @return the statusTimestamp value.
+ */
+ DateTime statusTimestamp();
+
+ /**
+ * @return the sxSStackVersion value.
+ */
+ String sxSStackVersion();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the updateErrorMessage value.
+ */
+ String updateErrorMessage();
+
+ /**
+ * @return the updateState value.
+ */
+ UpdateState updateState();
+
+ /**
+ * @return the virtualMachineId value.
+ */
+ String virtualMachineId();
+
+ /**
+ * The template for a SessionHost update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, UpdateStages.WithAllowNewSession, UpdateStages.WithAssignedUser {
+ }
+
+ /**
+ * Grouping of SessionHost update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the sessionhost update allowing to specify AllowNewSession.
+ */
+ interface WithAllowNewSession {
+ /**
+ * Specifies allowNewSession.
+ * @param allowNewSession Allow a new session
+ * @return the next update stage
+ */
+ Update withAllowNewSession(Boolean allowNewSession);
+ }
+
+ /**
+ * The stage of the sessionhost update allowing to specify AssignedUser.
+ */
+ interface WithAssignedUser {
+ /**
+ * Specifies assignedUser.
+ * @param assignedUser User assigned to SessionHost
+ * @return the next update stage
+ */
+ Update withAssignedUser(String assignedUser);
+ }
+
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionHostPatch.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionHostPatch.java
new file mode 100644
index 0000000000000..de1e8b2f1ef16
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionHostPatch.java
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * SessionHost properties that can be patched.
+ */
+@JsonFlatten
+public class SessionHostPatch extends ProxyResource {
+ /**
+ * Allow a new session.
+ */
+ @JsonProperty(value = "properties.allowNewSession")
+ private Boolean allowNewSession;
+
+ /**
+ * User assigned to SessionHost.
+ */
+ @JsonProperty(value = "properties.assignedUser")
+ private String assignedUser;
+
+ /**
+ * Get allow a new session.
+ *
+ * @return the allowNewSession value
+ */
+ public Boolean allowNewSession() {
+ return this.allowNewSession;
+ }
+
+ /**
+ * Set allow a new session.
+ *
+ * @param allowNewSession the allowNewSession value to set
+ * @return the SessionHostPatch object itself.
+ */
+ public SessionHostPatch withAllowNewSession(Boolean allowNewSession) {
+ this.allowNewSession = allowNewSession;
+ return this;
+ }
+
+ /**
+ * Get user assigned to SessionHost.
+ *
+ * @return the assignedUser value
+ */
+ public String assignedUser() {
+ return this.assignedUser;
+ }
+
+ /**
+ * Set user assigned to SessionHost.
+ *
+ * @param assignedUser the assignedUser value to set
+ * @return the SessionHostPatch object itself.
+ */
+ public SessionHostPatch withAssignedUser(String assignedUser) {
+ this.assignedUser = assignedUser;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionHosts.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionHosts.java
new file mode 100644
index 0000000000000..5c3861de98652
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionHosts.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.desktopvirtualization.v2019_12_10_preview;
+
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.SessionHostsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing SessionHosts.
+ */
+public interface SessionHosts extends HasInner {
+ /**
+ * Get a session host.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param hostPoolName The name of the host pool within the specified resource group
+ * @param sessionHostName The name of the session host within the specified host pool
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String hostPoolName, String sessionHostName);
+
+ /**
+ * List sessionHosts.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param hostPoolName The name of the host pool within the specified resource group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String hostPoolName);
+
+ /**
+ * Remove a SessionHost.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param hostPoolName The name of the host pool within the specified resource group
+ * @param sessionHostName The name of the session host within the specified host pool
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String hostPoolName, String sessionHostName);
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionState.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionState.java
new file mode 100644
index 0000000000000..726e1280e79e4
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/SessionState.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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for SessionState.
+ */
+public final class SessionState extends ExpandableStringEnum {
+ /** Static value Unknown for SessionState. */
+ public static final SessionState UNKNOWN = fromString("Unknown");
+
+ /** Static value Active for SessionState. */
+ public static final SessionState ACTIVE = fromString("Active");
+
+ /** Static value Disconnected for SessionState. */
+ public static final SessionState DISCONNECTED = fromString("Disconnected");
+
+ /** Static value Pending for SessionState. */
+ public static final SessionState PENDING = fromString("Pending");
+
+ /** Static value LogOff for SessionState. */
+ public static final SessionState LOG_OFF = fromString("LogOff");
+
+ /** Static value UserProfileDiskMounted for SessionState. */
+ public static final SessionState USER_PROFILE_DISK_MOUNTED = fromString("UserProfileDiskMounted");
+
+ /**
+ * Creates or finds a SessionState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding SessionState
+ */
+ @JsonCreator
+ public static SessionState fromString(String name) {
+ return fromString(name, SessionState.class);
+ }
+
+ /**
+ * @return known SessionState values
+ */
+ public static Collection values() {
+ return values(SessionState.class);
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/StartMenuItem.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/StartMenuItem.java
new file mode 100644
index 0000000000000..d03a466e5ce6b
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/StartMenuItem.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.StartMenuItemInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.DesktopVirtualizationManager;
+
+/**
+ * Type representing StartMenuItem.
+ */
+public interface StartMenuItem extends HasInner, HasManager {
+ /**
+ * @return the appAlias value.
+ */
+ String appAlias();
+
+ /**
+ * @return the commandLineArguments value.
+ */
+ String commandLineArguments();
+
+ /**
+ * @return the filePath value.
+ */
+ String filePath();
+
+ /**
+ * @return the friendlyName value.
+ */
+ String friendlyName();
+
+ /**
+ * @return the iconIndex value.
+ */
+ Integer iconIndex();
+
+ /**
+ * @return the iconPath value.
+ */
+ String iconPath();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/StartMenuItems.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/StartMenuItems.java
new file mode 100644
index 0000000000000..82e2e06e9ebea
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/StartMenuItems.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.desktopvirtualization.v2019_12_10_preview;
+
+import rx.Observable;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.StartMenuItemsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing StartMenuItems.
+ */
+public interface StartMenuItems extends HasInner {
+ /**
+ * List start menu items in the given application group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String applicationGroupName);
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Status.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Status.java
new file mode 100644
index 0000000000000..69dea78cc19e5
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Status.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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Status.
+ */
+public final class Status extends ExpandableStringEnum {
+ /** Static value Available for Status. */
+ public static final Status AVAILABLE = fromString("Available");
+
+ /** Static value Unavailable for Status. */
+ public static final Status UNAVAILABLE = fromString("Unavailable");
+
+ /** Static value Shutdown for Status. */
+ public static final Status SHUTDOWN = fromString("Shutdown");
+
+ /** Static value Disconnected for Status. */
+ public static final Status DISCONNECTED = fromString("Disconnected");
+
+ /** Static value Upgrading for Status. */
+ public static final Status UPGRADING = fromString("Upgrading");
+
+ /** Static value UpgradeFailed for Status. */
+ public static final Status UPGRADE_FAILED = fromString("UpgradeFailed");
+
+ /**
+ * Creates or finds a Status from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Status
+ */
+ @JsonCreator
+ public static Status fromString(String name) {
+ return fromString(name, Status.class);
+ }
+
+ /**
+ * @return known Status values
+ */
+ public static Collection values() {
+ return values(Status.class);
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/UpdateState.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/UpdateState.java
new file mode 100644
index 0000000000000..14216bc49b885
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/UpdateState.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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for UpdateState.
+ */
+public final class UpdateState extends ExpandableStringEnum {
+ /** Static value Initial for UpdateState. */
+ public static final UpdateState INITIAL = fromString("Initial");
+
+ /** Static value Pending for UpdateState. */
+ public static final UpdateState PENDING = fromString("Pending");
+
+ /** Static value Started for UpdateState. */
+ public static final UpdateState STARTED = fromString("Started");
+
+ /** Static value Succeeded for UpdateState. */
+ public static final UpdateState SUCCEEDED = fromString("Succeeded");
+
+ /** Static value Failed for UpdateState. */
+ public static final UpdateState FAILED = fromString("Failed");
+
+ /**
+ * Creates or finds a UpdateState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding UpdateState
+ */
+ @JsonCreator
+ public static UpdateState fromString(String name) {
+ return fromString(name, UpdateState.class);
+ }
+
+ /**
+ * @return known UpdateState values
+ */
+ public static Collection values() {
+ return values(UpdateState.class);
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/UserSession.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/UserSession.java
new file mode 100644
index 0000000000000..909ee15146940
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/UserSession.java
@@ -0,0 +1,61 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.UserSessionInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.DesktopVirtualizationManager;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing UserSession.
+ */
+public interface UserSession extends HasInner, HasManager {
+ /**
+ * @return the activeDirectoryUserName value.
+ */
+ String activeDirectoryUserName();
+
+ /**
+ * @return the applicationType value.
+ */
+ ApplicationType applicationType();
+
+ /**
+ * @return the createTime value.
+ */
+ DateTime createTime();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the sessionState value.
+ */
+ SessionState sessionState();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the userPrincipalName value.
+ */
+ String userPrincipalName();
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/UserSessions.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/UserSessions.java
new file mode 100644
index 0000000000000..446c91c9fab9c
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/UserSessions.java
@@ -0,0 +1,89 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview;
+
+import rx.Observable;
+import rx.Completable;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.UserSessionsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing UserSessions.
+ */
+public interface UserSessions extends HasInner {
+ /**
+ * Get a userSession.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param hostPoolName The name of the host pool within the specified resource group
+ * @param sessionHostName The name of the session host within the specified host pool
+ * @param userSessionId The name of the user session within the specified session host
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String resourceGroupName, String hostPoolName, String sessionHostName, String userSessionId);
+
+ /**
+ * Remove a userSession.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param hostPoolName The name of the host pool within the specified resource group
+ * @param sessionHostName The name of the session host within the specified host pool
+ * @param userSessionId The name of the user session within the specified session host
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String hostPoolName, String sessionHostName, String userSessionId);
+
+ /**
+ * List userSessions.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param hostPoolName The name of the host pool within the specified resource group
+ * @param sessionHostName The name of the session host within the specified host pool
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String resourceGroupName, final String hostPoolName, final String sessionHostName);
+
+ /**
+ * Disconnect a userSession.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param hostPoolName The name of the host pool within the specified resource group
+ * @param sessionHostName The name of the session host within the specified host pool
+ * @param userSessionId The name of the user session within the specified session host
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable disconnectAsync(String resourceGroupName, String hostPoolName, String sessionHostName, String userSessionId);
+
+ /**
+ * Send a message to a user.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param hostPoolName The name of the host pool within the specified resource group
+ * @param sessionHostName The name of the session host within the specified host pool
+ * @param userSessionId The name of the user session within the specified session host
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable sendMessageMethodAsync(String resourceGroupName, String hostPoolName, String sessionHostName, String userSessionId);
+
+ /**
+ * List userSessions.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param hostPoolName The name of the host pool within the specified resource group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByHostPoolAsync(final String resourceGroupName, final String hostPoolName);
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Workspace.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Workspace.java
new file mode 100644
index 0000000000000..28276e5ae4a5f
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Workspace.java
@@ -0,0 +1,156 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_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.desktopvirtualization.v2019_12_10_preview.implementation.DesktopVirtualizationManager;
+import java.util.List;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.WorkspaceInner;
+
+/**
+ * Type representing Workspace.
+ */
+public interface Workspace extends HasInner, Resource, GroupableResourceCore, HasResourceGroup, Refreshable, Updatable, HasManager {
+ /**
+ * @return the applicationGroupReferences value.
+ */
+ List applicationGroupReferences();
+
+ /**
+ * @return the description value.
+ */
+ String description();
+
+ /**
+ * @return the friendlyName value.
+ */
+ String friendlyName();
+
+ /**
+ * The entirety of the Workspace definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithGroup, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of Workspace definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a Workspace definition.
+ */
+ interface Blank extends GroupableResourceCore.DefinitionWithRegion {
+ }
+
+ /**
+ * The stage of the Workspace definition allowing to specify the resource group.
+ */
+ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup {
+ }
+
+ /**
+ * The stage of the workspace definition allowing to specify ApplicationGroupReferences.
+ */
+ interface WithApplicationGroupReferences {
+ /**
+ * Specifies applicationGroupReferences.
+ * @param applicationGroupReferences List of applicationGroup resource Ids
+ * @return the next definition stage
+ */
+ WithCreate withApplicationGroupReferences(List applicationGroupReferences);
+ }
+
+ /**
+ * The stage of the workspace definition allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description Description of Workspace
+ * @return the next definition stage
+ */
+ WithCreate withDescription(String description);
+ }
+
+ /**
+ * The stage of the workspace definition allowing to specify FriendlyName.
+ */
+ interface WithFriendlyName {
+ /**
+ * Specifies friendlyName.
+ * @param friendlyName Friendly name of Workspace
+ * @return the next definition stage
+ */
+ WithCreate withFriendlyName(String friendlyName);
+ }
+
+ /**
+ * 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.WithApplicationGroupReferences, DefinitionStages.WithDescription, DefinitionStages.WithFriendlyName {
+ }
+ }
+ /**
+ * The template for a Workspace update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithApplicationGroupReferences, UpdateStages.WithDescription, UpdateStages.WithFriendlyName {
+ }
+
+ /**
+ * Grouping of Workspace update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the workspace update allowing to specify ApplicationGroupReferences.
+ */
+ interface WithApplicationGroupReferences {
+ /**
+ * Specifies applicationGroupReferences.
+ * @param applicationGroupReferences List of applicationGroup links
+ * @return the next update stage
+ */
+ Update withApplicationGroupReferences(List applicationGroupReferences);
+ }
+
+ /**
+ * The stage of the workspace update allowing to specify Description.
+ */
+ interface WithDescription {
+ /**
+ * Specifies description.
+ * @param description Description of Workspace
+ * @return the next update stage
+ */
+ Update withDescription(String description);
+ }
+
+ /**
+ * The stage of the workspace update allowing to specify FriendlyName.
+ */
+ interface WithFriendlyName {
+ /**
+ * Specifies friendlyName.
+ * @param friendlyName Friendly name of Workspace
+ * @return the next update stage
+ */
+ Update withFriendlyName(String friendlyName);
+ }
+
+ }
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/WorkspacePatch.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/WorkspacePatch.java
new file mode 100644
index 0000000000000..789521c9e11db
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/WorkspacePatch.java
@@ -0,0 +1,125 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview;
+
+import java.util.Map;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Workspace properties that can be patched.
+ */
+@JsonFlatten
+public class WorkspacePatch {
+ /**
+ * tags to be updated.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * Description of Workspace.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /**
+ * Friendly name of Workspace.
+ */
+ @JsonProperty(value = "properties.friendlyName")
+ private String friendlyName;
+
+ /**
+ * List of applicationGroup links.
+ */
+ @JsonProperty(value = "properties.applicationGroupReferences")
+ private List applicationGroupReferences;
+
+ /**
+ * Get tags to be updated.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set tags to be updated.
+ *
+ * @param tags the tags value to set
+ * @return the WorkspacePatch object itself.
+ */
+ public WorkspacePatch withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ /**
+ * Get description of Workspace.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set description of Workspace.
+ *
+ * @param description the description value to set
+ * @return the WorkspacePatch object itself.
+ */
+ public WorkspacePatch withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get friendly name of Workspace.
+ *
+ * @return the friendlyName value
+ */
+ public String friendlyName() {
+ return this.friendlyName;
+ }
+
+ /**
+ * Set friendly name of Workspace.
+ *
+ * @param friendlyName the friendlyName value to set
+ * @return the WorkspacePatch object itself.
+ */
+ public WorkspacePatch withFriendlyName(String friendlyName) {
+ this.friendlyName = friendlyName;
+ return this;
+ }
+
+ /**
+ * Get list of applicationGroup links.
+ *
+ * @return the applicationGroupReferences value
+ */
+ public List applicationGroupReferences() {
+ return this.applicationGroupReferences;
+ }
+
+ /**
+ * Set list of applicationGroup links.
+ *
+ * @param applicationGroupReferences the applicationGroupReferences value to set
+ * @return the WorkspacePatch object itself.
+ */
+ public WorkspacePatch withApplicationGroupReferences(List applicationGroupReferences) {
+ this.applicationGroupReferences = applicationGroupReferences;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Workspaces.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Workspaces.java
new file mode 100644
index 0000000000000..abc1293c0d1f0
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/Workspaces.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.desktopvirtualization.v2019_12_10_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 com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation.WorkspacesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Workspaces.
+ */
+public interface Workspaces extends SupportsCreating, SupportsDeletingByResourceGroup, SupportsBatchDeletion, SupportsGettingByResourceGroup, SupportsListingByResourceGroup, SupportsListing, HasInner {
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupImpl.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupImpl.java
new file mode 100644
index 0000000000000..9a9cd73b52553
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupImpl.java
@@ -0,0 +1,125 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview.implementation;
+
+import com.microsoft.azure.arm.resources.models.implementation.GroupableResourceCoreImpl;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.ApplicationGroup;
+import rx.Observable;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.ApplicationGroupPatch;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.ApplicationGroupType;
+import rx.functions.Func1;
+
+class ApplicationGroupImpl extends GroupableResourceCoreImpl implements ApplicationGroup, ApplicationGroup.Definition, ApplicationGroup.Update {
+ private ApplicationGroupPatch updateParameter;
+ ApplicationGroupImpl(String name, ApplicationGroupInner inner, DesktopVirtualizationManager manager) {
+ super(name, inner, manager);
+ this.updateParameter = new ApplicationGroupPatch();
+ }
+
+ @Override
+ public Observable createResourceAsync() {
+ ApplicationGroupsInner client = this.manager().inner().applicationGroups();
+ return client.createOrUpdateAsync(this.resourceGroupName(), this.name(), this.inner())
+ .map(new Func1() {
+ @Override
+ public ApplicationGroupInner call(ApplicationGroupInner resource) {
+ resetCreateUpdateParameters();
+ return resource;
+ }
+ })
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ public Observable updateResourceAsync() {
+ ApplicationGroupsInner client = this.manager().inner().applicationGroups();
+ return client.updateAsync(this.resourceGroupName(), this.name(), this.updateParameter)
+ .map(new Func1() {
+ @Override
+ public ApplicationGroupInner call(ApplicationGroupInner resource) {
+ resetCreateUpdateParameters();
+ return resource;
+ }
+ })
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ protected Observable getInnerAsync() {
+ ApplicationGroupsInner client = this.manager().inner().applicationGroups();
+ return client.getByResourceGroupAsync(this.resourceGroupName(), this.name());
+ }
+
+ @Override
+ public boolean isInCreateMode() {
+ return this.inner().id() == null;
+ }
+
+ private void resetCreateUpdateParameters() {
+ this.updateParameter = new ApplicationGroupPatch();
+ }
+
+ @Override
+ public ApplicationGroupType applicationGroupType() {
+ return this.inner().applicationGroupType();
+ }
+
+ @Override
+ public String description() {
+ return this.inner().description();
+ }
+
+ @Override
+ public String friendlyName() {
+ return this.inner().friendlyName();
+ }
+
+ @Override
+ public String hostPoolArmPath() {
+ return this.inner().hostPoolArmPath();
+ }
+
+ @Override
+ public String workspaceArmPath() {
+ return this.inner().workspaceArmPath();
+ }
+
+ @Override
+ public ApplicationGroupImpl withApplicationGroupType(ApplicationGroupType applicationGroupType) {
+ this.inner().withApplicationGroupType(applicationGroupType);
+ return this;
+ }
+
+ @Override
+ public ApplicationGroupImpl withHostPoolArmPath(String hostPoolArmPath) {
+ this.inner().withHostPoolArmPath(hostPoolArmPath);
+ return this;
+ }
+
+ @Override
+ public ApplicationGroupImpl withDescription(String description) {
+ if (isInCreateMode()) {
+ this.inner().withDescription(description);
+ } else {
+ this.updateParameter.withDescription(description);
+ }
+ return this;
+ }
+
+ @Override
+ public ApplicationGroupImpl withFriendlyName(String friendlyName) {
+ if (isInCreateMode()) {
+ this.inner().withFriendlyName(friendlyName);
+ } else {
+ this.updateParameter.withFriendlyName(friendlyName);
+ }
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupInner.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupInner.java
new file mode 100644
index 0000000000000..c4ecff35b582a
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupInner.java
@@ -0,0 +1,141 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview.implementation;
+
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.ApplicationGroupType;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.Resource;
+
+/**
+ * Represents a ApplicationGroup definition.
+ */
+@JsonFlatten
+public class ApplicationGroupInner extends Resource {
+ /**
+ * Description of ApplicationGroup.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /**
+ * Friendly name of ApplicationGroup.
+ */
+ @JsonProperty(value = "properties.friendlyName")
+ private String friendlyName;
+
+ /**
+ * HostPool arm path of ApplicationGroup.
+ */
+ @JsonProperty(value = "properties.hostPoolArmPath", required = true)
+ private String hostPoolArmPath;
+
+ /**
+ * Workspace arm path of ApplicationGroup.
+ */
+ @JsonProperty(value = "properties.workspaceArmPath", access = JsonProperty.Access.WRITE_ONLY)
+ private String workspaceArmPath;
+
+ /**
+ * Resource Type of ApplicationGroup. Possible values include: 'RemoteApp',
+ * 'Desktop'.
+ */
+ @JsonProperty(value = "properties.applicationGroupType", required = true)
+ private ApplicationGroupType applicationGroupType;
+
+ /**
+ * Get description of ApplicationGroup.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set description of ApplicationGroup.
+ *
+ * @param description the description value to set
+ * @return the ApplicationGroupInner object itself.
+ */
+ public ApplicationGroupInner withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get friendly name of ApplicationGroup.
+ *
+ * @return the friendlyName value
+ */
+ public String friendlyName() {
+ return this.friendlyName;
+ }
+
+ /**
+ * Set friendly name of ApplicationGroup.
+ *
+ * @param friendlyName the friendlyName value to set
+ * @return the ApplicationGroupInner object itself.
+ */
+ public ApplicationGroupInner withFriendlyName(String friendlyName) {
+ this.friendlyName = friendlyName;
+ return this;
+ }
+
+ /**
+ * Get hostPool arm path of ApplicationGroup.
+ *
+ * @return the hostPoolArmPath value
+ */
+ public String hostPoolArmPath() {
+ return this.hostPoolArmPath;
+ }
+
+ /**
+ * Set hostPool arm path of ApplicationGroup.
+ *
+ * @param hostPoolArmPath the hostPoolArmPath value to set
+ * @return the ApplicationGroupInner object itself.
+ */
+ public ApplicationGroupInner withHostPoolArmPath(String hostPoolArmPath) {
+ this.hostPoolArmPath = hostPoolArmPath;
+ return this;
+ }
+
+ /**
+ * Get workspace arm path of ApplicationGroup.
+ *
+ * @return the workspaceArmPath value
+ */
+ public String workspaceArmPath() {
+ return this.workspaceArmPath;
+ }
+
+ /**
+ * Get resource Type of ApplicationGroup. Possible values include: 'RemoteApp', 'Desktop'.
+ *
+ * @return the applicationGroupType value
+ */
+ public ApplicationGroupType applicationGroupType() {
+ return this.applicationGroupType;
+ }
+
+ /**
+ * Set resource Type of ApplicationGroup. Possible values include: 'RemoteApp', 'Desktop'.
+ *
+ * @param applicationGroupType the applicationGroupType value to set
+ * @return the ApplicationGroupInner object itself.
+ */
+ public ApplicationGroupInner withApplicationGroupType(ApplicationGroupType applicationGroupType) {
+ this.applicationGroupType = applicationGroupType;
+ return this;
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupsImpl.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupsImpl.java
new file mode 100644
index 0000000000000..9d2cd02e28b3a
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupsImpl.java
@@ -0,0 +1,138 @@
+/**
+ * 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.
+ * def
+ */
+
+package com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.implementation;
+
+import com.microsoft.azure.arm.resources.collection.implementation.GroupableResourcesCoreImpl;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.ApplicationGroups;
+import com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.ApplicationGroup;
+import rx.Observable;
+import rx.Completable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import com.microsoft.azure.arm.resources.ResourceUtilsCore;
+import com.microsoft.azure.arm.utils.RXMapper;
+import rx.functions.Func1;
+import com.microsoft.azure.PagedList;
+import com.microsoft.azure.Page;
+
+class ApplicationGroupsImpl extends GroupableResourcesCoreImpl implements ApplicationGroups {
+ protected ApplicationGroupsImpl(DesktopVirtualizationManager manager) {
+ super(manager.inner().applicationGroups(), manager);
+ }
+
+ @Override
+ protected Observable getInnerAsync(String resourceGroupName, String name) {
+ ApplicationGroupsInner client = this.inner();
+ return client.getByResourceGroupAsync(resourceGroupName, name);
+ }
+
+ @Override
+ protected Completable deleteInnerAsync(String resourceGroupName, String name) {
+ ApplicationGroupsInner client = this.inner();
+ return client.deleteAsync(resourceGroupName, name).toCompletable();
+ }
+
+ @Override
+ public Observable deleteByIdsAsync(Collection ids) {
+ if (ids == null || ids.isEmpty()) {
+ return Observable.empty();
+ }
+ Collection> observables = new ArrayList<>();
+ for (String id : ids) {
+ final String resourceGroupName = ResourceUtilsCore.groupFromResourceId(id);
+ final String name = ResourceUtilsCore.nameFromResourceId(id);
+ Observable o = RXMapper.map(this.inner().deleteAsync(resourceGroupName, name), id);
+ observables.add(o);
+ }
+ return Observable.mergeDelayError(observables);
+ }
+
+ @Override
+ public Observable deleteByIdsAsync(String...ids) {
+ return this.deleteByIdsAsync(new ArrayList(Arrays.asList(ids)));
+ }
+
+ @Override
+ public void deleteByIds(Collection ids) {
+ if (ids != null && !ids.isEmpty()) {
+ this.deleteByIdsAsync(ids).toBlocking().last();
+ }
+ }
+
+ @Override
+ public void deleteByIds(String...ids) {
+ this.deleteByIds(new ArrayList(Arrays.asList(ids)));
+ }
+
+ @Override
+ public PagedList listByResourceGroup(String resourceGroupName) {
+ ApplicationGroupsInner client = this.inner();
+ return this.wrapList(client.listByResourceGroup(resourceGroupName));
+ }
+
+ @Override
+ public Observable listByResourceGroupAsync(String resourceGroupName) {
+ ApplicationGroupsInner client = this.inner();
+ return client.listByResourceGroupAsync(resourceGroupName)
+ .flatMapIterable(new Func1, Iterable>() {
+ @Override
+ public Iterable call(Page page) {
+ return page.items();
+ }
+ })
+ .map(new Func1() {
+ @Override
+ public ApplicationGroup call(ApplicationGroupInner inner) {
+ return wrapModel(inner);
+ }
+ });
+ }
+
+ @Override
+ public PagedList list() {
+ ApplicationGroupsInner client = this.inner();
+ return this.wrapList(client.list());
+ }
+
+ @Override
+ public Observable listAsync() {
+ ApplicationGroupsInner client = this.inner();
+ return client.listAsync()
+ .flatMapIterable(new Func1, Iterable>() {
+ @Override
+ public Iterable call(Page page) {
+ return page.items();
+ }
+ })
+ .map(new Func1() {
+ @Override
+ public ApplicationGroup call(ApplicationGroupInner inner) {
+ return wrapModel(inner);
+ }
+ });
+ }
+
+ @Override
+ public ApplicationGroupImpl define(String name) {
+ return wrapModel(name);
+ }
+
+ @Override
+ protected ApplicationGroupImpl wrapModel(ApplicationGroupInner inner) {
+ return new ApplicationGroupImpl(inner.name(), inner, manager());
+ }
+
+ @Override
+ protected ApplicationGroupImpl wrapModel(String name) {
+ return new ApplicationGroupImpl(name, new ApplicationGroupInner(), this.manager());
+ }
+
+}
diff --git a/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupsInner.java b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupsInner.java
new file mode 100644
index 0000000000000..e838117442f1e
--- /dev/null
+++ b/sdk/desktopvirtualization/mgmt-v2019_12_10_preview/src/main/java/com/microsoft/azure/management/desktopvirtualization/v2019_12_10_preview/implementation/ApplicationGroupsInner.java
@@ -0,0 +1,1205 @@
+/**
+ * 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.desktopvirtualization.v2019_12_10_preview.implementation;
+
+import com.microsoft.azure.arm.collection.InnerSupportsGet;
+import com.microsoft.azure.arm.collection.InnerSupportsDelete;
+import com.microsoft.azure.arm.collection.InnerSupportsListing;
+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.management.desktopvirtualization.v2019_12_10_preview.ApplicationGroupPatch;
+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 ApplicationGroups.
+ */
+public class ApplicationGroupsInner implements InnerSupportsGet, InnerSupportsDelete, InnerSupportsListing {
+ /** The Retrofit service to perform REST calls. */
+ private ApplicationGroupsService service;
+ /** The service client containing this operation class. */
+ private DesktopVirtualizationAPIClientImpl client;
+
+ /**
+ * Initializes an instance of ApplicationGroupsInner.
+ *
+ * @param retrofit the Retrofit instance built from a Retrofit Builder.
+ * @param client the instance of the service client containing this operation class.
+ */
+ public ApplicationGroupsInner(Retrofit retrofit, DesktopVirtualizationAPIClientImpl client) {
+ this.service = retrofit.create(ApplicationGroupsService.class);
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for ApplicationGroups to be
+ * used by Retrofit to perform actually REST calls.
+ */
+ interface ApplicationGroupsService {
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.desktopvirtualization.v2019_12_10_preview.ApplicationGroups getByResourceGroup" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}")
+ Observable> getByResourceGroup(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("applicationGroupName") String applicationGroupName, @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.desktopvirtualization.v2019_12_10_preview.ApplicationGroups createOrUpdate" })
+ @PUT("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}")
+ Observable> createOrUpdate(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("applicationGroupName") String applicationGroupName, @Query("api-version") String apiVersion, @Body ApplicationGroupInner applicationGroup, @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.desktopvirtualization.v2019_12_10_preview.ApplicationGroups delete" })
+ @HTTP(path = "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}", method = "DELETE", hasBody = true)
+ Observable> delete(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("applicationGroupName") String applicationGroupName, @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.desktopvirtualization.v2019_12_10_preview.ApplicationGroups update" })
+ @PATCH("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}")
+ Observable> update(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Path("applicationGroupName") String applicationGroupName, @Query("api-version") String apiVersion, @Body ApplicationGroupPatch applicationGroup, @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.desktopvirtualization.v2019_12_10_preview.ApplicationGroups listByResourceGroup" })
+ @GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups")
+ Observable> listByResourceGroup(@Path("subscriptionId") String subscriptionId, @Path("resourceGroupName") String resourceGroupName, @Query("api-version") String apiVersion, @Query("$filter") String filter, @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.desktopvirtualization.v2019_12_10_preview.ApplicationGroups list" })
+ @GET("subscriptions/{subscriptionId}/providers/Microsoft.DesktopVirtualization/applicationGroups")
+ Observable> list(@Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Query("$filter") String filter, @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.desktopvirtualization.v2019_12_10_preview.ApplicationGroups listByResourceGroupNext" })
+ @GET
+ Observable> listByResourceGroupNext(@Url String nextUrl, @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.desktopvirtualization.v2019_12_10_preview.ApplicationGroups listNext" })
+ @GET
+ Observable> listNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ }
+
+ /**
+ * Get an application group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @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 ApplicationGroupInner object if successful.
+ */
+ public ApplicationGroupInner getByResourceGroup(String resourceGroupName, String applicationGroupName) {
+ return getByResourceGroupWithServiceResponseAsync(resourceGroupName, applicationGroupName).toBlocking().single().body();
+ }
+
+ /**
+ * Get an application group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @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 getByResourceGroupAsync(String resourceGroupName, String applicationGroupName, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(getByResourceGroupWithServiceResponseAsync(resourceGroupName, applicationGroupName), serviceCallback);
+ }
+
+ /**
+ * Get an application group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ApplicationGroupInner object
+ */
+ public Observable getByResourceGroupAsync(String resourceGroupName, String applicationGroupName) {
+ return getByResourceGroupWithServiceResponseAsync(resourceGroupName, applicationGroupName).map(new Func1, ApplicationGroupInner>() {
+ @Override
+ public ApplicationGroupInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Get an application group.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ApplicationGroupInner object
+ */
+ public Observable> getByResourceGroupWithServiceResponseAsync(String resourceGroupName, String applicationGroupName) {
+ 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 (applicationGroupName == null) {
+ throw new IllegalArgumentException("Parameter applicationGroupName is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ return service.getByResourceGroup(this.client.subscriptionId(), resourceGroupName, applicationGroupName, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = getByResourceGroupDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse getByResourceGroupDelegate(Response response) throws CloudException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory().newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken() { }.getType())
+ .registerError(CloudException.class)
+ .build(response);
+ }
+
+ /**
+ * Create or update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @param applicationGroup Object containing ApplicationGroup definitions.
+ * @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 ApplicationGroupInner object if successful.
+ */
+ public ApplicationGroupInner createOrUpdate(String resourceGroupName, String applicationGroupName, ApplicationGroupInner applicationGroup) {
+ return createOrUpdateWithServiceResponseAsync(resourceGroupName, applicationGroupName, applicationGroup).toBlocking().single().body();
+ }
+
+ /**
+ * Create or update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @param applicationGroup Object containing ApplicationGroup definitions.
+ * @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 createOrUpdateAsync(String resourceGroupName, String applicationGroupName, ApplicationGroupInner applicationGroup, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(createOrUpdateWithServiceResponseAsync(resourceGroupName, applicationGroupName, applicationGroup), serviceCallback);
+ }
+
+ /**
+ * Create or update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @param applicationGroup Object containing ApplicationGroup definitions.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ApplicationGroupInner object
+ */
+ public Observable createOrUpdateAsync(String resourceGroupName, String applicationGroupName, ApplicationGroupInner applicationGroup) {
+ return createOrUpdateWithServiceResponseAsync(resourceGroupName, applicationGroupName, applicationGroup).map(new Func1, ApplicationGroupInner>() {
+ @Override
+ public ApplicationGroupInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Create or update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @param applicationGroup Object containing ApplicationGroup definitions.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ApplicationGroupInner object
+ */
+ public Observable> createOrUpdateWithServiceResponseAsync(String resourceGroupName, String applicationGroupName, ApplicationGroupInner applicationGroup) {
+ 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 (applicationGroupName == null) {
+ throw new IllegalArgumentException("Parameter applicationGroupName is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ if (applicationGroup == null) {
+ throw new IllegalArgumentException("Parameter applicationGroup is required and cannot be null.");
+ }
+ Validator.validate(applicationGroup);
+ return service.createOrUpdate(this.client.subscriptionId(), resourceGroupName, applicationGroupName, this.client.apiVersion(), applicationGroup, this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = createOrUpdateDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse createOrUpdateDelegate(Response response) throws CloudException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory().newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken() { }.getType())
+ .register(201, new TypeToken() { }.getType())
+ .registerError(CloudException.class)
+ .build(response);
+ }
+
+ /**
+ * Remove an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @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
+ */
+ public void delete(String resourceGroupName, String applicationGroupName) {
+ deleteWithServiceResponseAsync(resourceGroupName, applicationGroupName).toBlocking().single().body();
+ }
+
+ /**
+ * Remove an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @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 deleteAsync(String resourceGroupName, String applicationGroupName, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(deleteWithServiceResponseAsync(resourceGroupName, applicationGroupName), serviceCallback);
+ }
+
+ /**
+ * Remove an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceResponse} object if successful.
+ */
+ public Observable deleteAsync(String resourceGroupName, String applicationGroupName) {
+ return deleteWithServiceResponseAsync(resourceGroupName, applicationGroupName).map(new Func1, Void>() {
+ @Override
+ public Void call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Remove an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceResponse} object if successful.
+ */
+ public Observable> deleteWithServiceResponseAsync(String resourceGroupName, String applicationGroupName) {
+ 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 (applicationGroupName == null) {
+ throw new IllegalArgumentException("Parameter applicationGroupName is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ return service.delete(this.client.subscriptionId(), resourceGroupName, applicationGroupName, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = deleteDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse deleteDelegate(Response response) throws CloudException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory().newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken() { }.getType())
+ .register(204, new TypeToken() { }.getType())
+ .registerError(CloudException.class)
+ .build(response);
+ }
+
+ /**
+ * Update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @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 ApplicationGroupInner object if successful.
+ */
+ public ApplicationGroupInner update(String resourceGroupName, String applicationGroupName) {
+ return updateWithServiceResponseAsync(resourceGroupName, applicationGroupName).toBlocking().single().body();
+ }
+
+ /**
+ * Update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @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 updateAsync(String resourceGroupName, String applicationGroupName, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(updateWithServiceResponseAsync(resourceGroupName, applicationGroupName), serviceCallback);
+ }
+
+ /**
+ * Update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ApplicationGroupInner object
+ */
+ public Observable updateAsync(String resourceGroupName, String applicationGroupName) {
+ return updateWithServiceResponseAsync(resourceGroupName, applicationGroupName).map(new Func1, ApplicationGroupInner>() {
+ @Override
+ public ApplicationGroupInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ApplicationGroupInner object
+ */
+ public Observable> updateWithServiceResponseAsync(String resourceGroupName, String applicationGroupName) {
+ 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 (applicationGroupName == null) {
+ throw new IllegalArgumentException("Parameter applicationGroupName 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 ApplicationGroupPatch applicationGroup = null;
+ return service.update(this.client.subscriptionId(), resourceGroupName, applicationGroupName, this.client.apiVersion(), applicationGroup, this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = updateDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ /**
+ * Update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @param applicationGroup Object containing ApplicationGroup definitions.
+ * @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 ApplicationGroupInner object if successful.
+ */
+ public ApplicationGroupInner update(String resourceGroupName, String applicationGroupName, ApplicationGroupPatch applicationGroup) {
+ return updateWithServiceResponseAsync(resourceGroupName, applicationGroupName, applicationGroup).toBlocking().single().body();
+ }
+
+ /**
+ * Update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @param applicationGroup Object containing ApplicationGroup definitions.
+ * @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 updateAsync(String resourceGroupName, String applicationGroupName, ApplicationGroupPatch applicationGroup, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(updateWithServiceResponseAsync(resourceGroupName, applicationGroupName, applicationGroup), serviceCallback);
+ }
+
+ /**
+ * Update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @param applicationGroup Object containing ApplicationGroup definitions.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ApplicationGroupInner object
+ */
+ public Observable updateAsync(String resourceGroupName, String applicationGroupName, ApplicationGroupPatch applicationGroup) {
+ return updateWithServiceResponseAsync(resourceGroupName, applicationGroupName, applicationGroup).map(new Func1, ApplicationGroupInner>() {
+ @Override
+ public ApplicationGroupInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Update an applicationGroup.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @param applicationGroupName The name of the application group
+ * @param applicationGroup Object containing ApplicationGroup definitions.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ApplicationGroupInner object
+ */
+ public Observable> updateWithServiceResponseAsync(String resourceGroupName, String applicationGroupName, ApplicationGroupPatch applicationGroup) {
+ 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 (applicationGroupName == null) {
+ throw new IllegalArgumentException("Parameter applicationGroupName is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ Validator.validate(applicationGroup);
+ return service.update(this.client.subscriptionId(), resourceGroupName, applicationGroupName, this.client.apiVersion(), applicationGroup, this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = updateDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse updateDelegate(Response response) throws CloudException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory().newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken() { }.getType())
+ .registerError(CloudException.class)
+ .build(response);
+ }
+
+ /**
+ * List applicationGroups.
+ *
+ * @param resourceGroupName The name of the resource group. The name is case insensitive.
+ * @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<ApplicationGroupInner> object if successful.
+ */
+ public PagedList listByResourceGroup(final String resourceGroupName) {
+ ServiceResponse> response = listByResourceGroupSinglePageAsync(resourceGroupName).toBlocking().single();
+ return new PagedList