diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt
index e6a425f455c2..35cadba5a866 100644
--- a/eng/versioning/version_client.txt
+++ b/eng/versioning/version_client.txt
@@ -210,6 +210,7 @@ com.azure.resourcemanager:azure-resourcemanager-redisenterprise;1.0.0-beta.2;1.0
com.azure.resourcemanager:azure-resourcemanager-hybridkubernetes;1.0.0-beta.1;1.0.0-beta.2
com.azure.resourcemanager:azure-resourcemanager-iothub;1.0.0-beta.1;1.0.0-beta.2
com.azure.resourcemanager:azure-resourcemanager-datadog;1.0.0-beta.1;1.0.0-beta.2
+com.azure.resourcemanager:azure-resourcemanager-devtestlabs;1.0.0-beta.1;1.0.0-beta.1
# Unreleased dependencies: Copy the entry from above, prepend "unreleased_" and remove the current
# version. Unreleased dependencies are only valid for dependency versions.
diff --git a/pom.xml b/pom.xml
index f511c48002b3..67f8430c79e4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -593,8 +593,9 @@
sdk/core
sdk/cosmos
sdk/costmanagement
- sdk/deviceupdate
sdk/datadog
+ sdk/deviceupdate
+ sdk/devtestlabs
sdk/digitaltwins
sdk/eventgrid
sdk/eventhubs
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/CHANGELOG.md b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/CHANGELOG.md
new file mode 100644
index 000000000000..8751e648c442
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/CHANGELOG.md
@@ -0,0 +1,5 @@
+# Release History
+
+## 1.0.0-beta.1 (2021-03-09)
+
+- Azure Resource Manager DevTestLabs client library for Java. This package contains Microsoft Azure SDK for DevTestLabs Management SDK. The DevTest Labs Client. Package tag package-2018-09. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt).
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/README.md b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/README.md
new file mode 100644
index 000000000000..5f89892bc43a
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/README.md
@@ -0,0 +1,99 @@
+# Azure Resource Manager DevTestLabs client library for Java
+
+Azure Resource Manager DevTestLabs client library for Java.
+
+This package contains Microsoft Azure SDK for DevTestLabs Management SDK. The DevTest Labs Client. Package tag package-2018-09. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt).
+
+## We'd love to hear your feedback
+
+We're always working on improving our products and the way we communicate with our users. So we'd love to learn what's working and how we can do better.
+
+If you haven't already, please take a few minutes to [complete this short survey][survey] we have put together.
+
+Thank you in advance for your collaboration. We really appreciate your time!
+
+## Documentation
+
+Various documentation is available to help you get started
+
+- [API reference documentation][docs]
+
+## Getting started
+
+### Prerequisites
+
+- [Java Development Kit (JDK)][jdk] with version 8 or above
+- [Azure Subscription][azure_subscription]
+
+### Adding the package to your product
+
+[//]: # ({x-version-update-start;com.azure.resourcemanager:azure-resourcemanager-devtestlabs;current})
+```xml
+
+ com.azure.resourcemanager
+ azure-resourcemanager-devtestlabs
+ 1.0.0-beta.1
+
+```
+[//]: # ({x-version-update-end})
+
+### Include the recommended packages
+
+Azure Management Libraries require a `TokenCredential` implementation for authentication and an `HttpClient` implementation for HTTP client.
+
+[Azure Identity][azure_identity] package and [Azure Core Netty HTTP][azure_core_http_netty] package provide the default implementation.
+
+### Authentication
+
+By default, Azure Active Directory token authentication depends on correct configure of following environment variables.
+
+- `AZURE_CLIENT_ID` for Azure client ID.
+- `AZURE_TENANT_ID` for Azure tenant ID.
+- `AZURE_CLIENT_SECRET` or `AZURE_CLIENT_CERTIFICATE_PATH` for client secret or client certificate.
+
+In addition, Azure subscription ID can be configured via environment variable `AZURE_SUBSCRIPTION_ID`.
+
+With above configuration, `azure` client can be authenticated by following code:
+
+```java
+AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
+TokenCredential credential = new DefaultAzureCredentialBuilder()
+ .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint())
+ .build();
+DevTestLabsManager manager = DevTestLabsManager
+ .authenticate(credential, profile);
+```
+
+The sample code assumes global Azure. Please change `AzureEnvironment.AZURE` variable if otherwise.
+
+See [Authentication][authenticate] for more options.
+
+## Key concepts
+
+See [API design][design] for general introduction on design and key concepts on Azure Management Libraries.
+
+## Examples
+
+## Troubleshooting
+
+## Next steps
+
+## Contributing
+
+For details on contributing to this repository, see the [contributing guide](https://github.com/Azure/azure-sdk-for-java/blob/master/CONTRIBUTING.md).
+
+1. Fork it
+1. Create your feature branch (`git checkout -b my-new-feature`)
+1. Commit your changes (`git commit -am 'Add some feature'`)
+1. Push to the branch (`git push origin my-new-feature`)
+1. Create new Pull Request
+
+
+[survey]: https://microsoft.qualtrics.com/jfe/form/SV_ehN0lIk2FKEBkwd?Q_CHL=DOCS
+[docs]: https://azure.github.io/azure-sdk-for-java/
+[jdk]: https://docs.microsoft.com/java/azure/jdk/
+[azure_subscription]: https://azure.microsoft.com/free/
+[azure_identity]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/identity/azure-identity
+[azure_core_http_netty]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/core/azure-core-http-netty
+[authenticate]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/resourcemanager/docs/AUTH.md
+[design]: https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/resourcemanager/docs/DESIGN.md
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/pom.xml b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/pom.xml
new file mode 100644
index 000000000000..abb1419c478a
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/pom.xml
@@ -0,0 +1,67 @@
+
+ 4.0.0
+
+ com.azure
+ azure-client-sdk-parent
+ 1.7.0
+ ../../parents/azure-client-sdk-parent
+
+
+ com.azure.resourcemanager
+ azure-resourcemanager-devtestlabs
+ 1.0.0-beta.1
+ jar
+
+ Microsoft Azure SDK for DevTestLabs Management
+ This package contains Microsoft Azure SDK for DevTestLabs Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. The DevTest Labs Client. Package tag package-2018-09.
+ https://github.com/Azure/azure-sdk-for-java
+
+
+
+ The MIT License (MIT)
+ http://opensource.org/licenses/MIT
+ repo
+
+
+
+
+ https://github.com/Azure/azure-sdk-for-java
+ scm:git:git@github.com:Azure/azure-sdk-for-java.git
+ scm:git:git@github.com:Azure/azure-sdk-for-java.git
+ HEAD
+
+
+
+ microsoft
+ Microsoft
+
+
+
+ UTF-8
+
+
+
+
+ com.azure
+ azure-core
+ 1.14.0
+
+
+ com.azure
+ azure-core-management
+ 1.2.0
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.5
+
+ true
+
+
+
+
+
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/DevTestLabsManager.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/DevTestLabsManager.java
new file mode 100644
index 000000000000..bf74681887db
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/DevTestLabsManager.java
@@ -0,0 +1,504 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs;
+
+import com.azure.core.credential.TokenCredential;
+import com.azure.core.http.HttpClient;
+import com.azure.core.http.HttpPipeline;
+import com.azure.core.http.HttpPipelineBuilder;
+import com.azure.core.http.policy.AddDatePolicy;
+import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
+import com.azure.core.http.policy.HttpLogOptions;
+import com.azure.core.http.policy.HttpLoggingPolicy;
+import com.azure.core.http.policy.HttpPipelinePolicy;
+import com.azure.core.http.policy.HttpPolicyProviders;
+import com.azure.core.http.policy.RequestIdPolicy;
+import com.azure.core.http.policy.RetryPolicy;
+import com.azure.core.http.policy.UserAgentPolicy;
+import com.azure.core.management.profile.AzureProfile;
+import com.azure.core.util.Configuration;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.fluent.DevTestLabsClient;
+import com.azure.resourcemanager.devtestlabs.implementation.ArmTemplatesImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.ArtifactSourcesImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.ArtifactsImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.CostsImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.CustomImagesImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.DevTestLabsClientBuilder;
+import com.azure.resourcemanager.devtestlabs.implementation.DisksImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.EnvironmentsImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.FormulasImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.GalleryImagesImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.GlobalSchedulesImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.LabsImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.NotificationChannelsImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.OperationsImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.PoliciesImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.PolicySetsImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.ProviderOperationsImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.SchedulesImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.SecretsImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.ServiceFabricSchedulesImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.ServiceFabricsImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.ServiceRunnersImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.UsersImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.VirtualMachineSchedulesImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.VirtualMachinesImpl;
+import com.azure.resourcemanager.devtestlabs.implementation.VirtualNetworksImpl;
+import com.azure.resourcemanager.devtestlabs.models.ArmTemplates;
+import com.azure.resourcemanager.devtestlabs.models.ArtifactSources;
+import com.azure.resourcemanager.devtestlabs.models.Artifacts;
+import com.azure.resourcemanager.devtestlabs.models.Costs;
+import com.azure.resourcemanager.devtestlabs.models.CustomImages;
+import com.azure.resourcemanager.devtestlabs.models.Disks;
+import com.azure.resourcemanager.devtestlabs.models.Environments;
+import com.azure.resourcemanager.devtestlabs.models.Formulas;
+import com.azure.resourcemanager.devtestlabs.models.GalleryImages;
+import com.azure.resourcemanager.devtestlabs.models.GlobalSchedules;
+import com.azure.resourcemanager.devtestlabs.models.Labs;
+import com.azure.resourcemanager.devtestlabs.models.NotificationChannels;
+import com.azure.resourcemanager.devtestlabs.models.Operations;
+import com.azure.resourcemanager.devtestlabs.models.Policies;
+import com.azure.resourcemanager.devtestlabs.models.PolicySets;
+import com.azure.resourcemanager.devtestlabs.models.ProviderOperations;
+import com.azure.resourcemanager.devtestlabs.models.Schedules;
+import com.azure.resourcemanager.devtestlabs.models.Secrets;
+import com.azure.resourcemanager.devtestlabs.models.ServiceFabricSchedules;
+import com.azure.resourcemanager.devtestlabs.models.ServiceFabrics;
+import com.azure.resourcemanager.devtestlabs.models.ServiceRunners;
+import com.azure.resourcemanager.devtestlabs.models.Users;
+import com.azure.resourcemanager.devtestlabs.models.VirtualMachineSchedules;
+import com.azure.resourcemanager.devtestlabs.models.VirtualMachines;
+import com.azure.resourcemanager.devtestlabs.models.VirtualNetworks;
+import java.time.Duration;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/** Entry point to DevTestLabsManager. The DevTest Labs Client. */
+public final class DevTestLabsManager {
+ private ProviderOperations providerOperations;
+
+ private Labs labs;
+
+ private Operations operations;
+
+ private GlobalSchedules globalSchedules;
+
+ private ArtifactSources artifactSources;
+
+ private ArmTemplates armTemplates;
+
+ private Artifacts artifacts;
+
+ private Costs costs;
+
+ private CustomImages customImages;
+
+ private Formulas formulas;
+
+ private GalleryImages galleryImages;
+
+ private NotificationChannels notificationChannels;
+
+ private PolicySets policySets;
+
+ private Policies policies;
+
+ private Schedules schedules;
+
+ private ServiceRunners serviceRunners;
+
+ private Users users;
+
+ private Disks disks;
+
+ private Environments environments;
+
+ private Secrets secrets;
+
+ private ServiceFabrics serviceFabrics;
+
+ private ServiceFabricSchedules serviceFabricSchedules;
+
+ private VirtualMachines virtualMachines;
+
+ private VirtualMachineSchedules virtualMachineSchedules;
+
+ private VirtualNetworks virtualNetworks;
+
+ private final DevTestLabsClient clientObject;
+
+ private DevTestLabsManager(HttpPipeline httpPipeline, AzureProfile profile, Duration defaultPollInterval) {
+ Objects.requireNonNull(httpPipeline, "'httpPipeline' cannot be null.");
+ Objects.requireNonNull(profile, "'profile' cannot be null.");
+ this.clientObject =
+ new DevTestLabsClientBuilder()
+ .pipeline(httpPipeline)
+ .endpoint(profile.getEnvironment().getResourceManagerEndpoint())
+ .subscriptionId(profile.getSubscriptionId())
+ .defaultPollInterval(defaultPollInterval)
+ .buildClient();
+ }
+
+ /**
+ * Creates an instance of DevTestLabs service API entry point.
+ *
+ * @param credential the credential to use.
+ * @param profile the Azure profile for client.
+ * @return the DevTestLabs service API instance.
+ */
+ public static DevTestLabsManager authenticate(TokenCredential credential, AzureProfile profile) {
+ Objects.requireNonNull(credential, "'credential' cannot be null.");
+ Objects.requireNonNull(profile, "'profile' cannot be null.");
+ return configure().authenticate(credential, profile);
+ }
+
+ /**
+ * Gets a Configurable instance that can be used to create DevTestLabsManager with optional configuration.
+ *
+ * @return the Configurable instance allowing configurations.
+ */
+ public static Configurable configure() {
+ return new DevTestLabsManager.Configurable();
+ }
+
+ /** The Configurable allowing configurations to be set. */
+ public static final class Configurable {
+ private final ClientLogger logger = new ClientLogger(Configurable.class);
+
+ private HttpClient httpClient;
+ private HttpLogOptions httpLogOptions;
+ private final List policies = new ArrayList<>();
+ private RetryPolicy retryPolicy;
+ private Duration defaultPollInterval;
+
+ private Configurable() {
+ }
+
+ /**
+ * Sets the http client.
+ *
+ * @param httpClient the HTTP client.
+ * @return the configurable object itself.
+ */
+ public Configurable withHttpClient(HttpClient httpClient) {
+ this.httpClient = Objects.requireNonNull(httpClient, "'httpClient' cannot be null.");
+ return this;
+ }
+
+ /**
+ * Sets the logging options to the HTTP pipeline.
+ *
+ * @param httpLogOptions the HTTP log options.
+ * @return the configurable object itself.
+ */
+ public Configurable withLogOptions(HttpLogOptions httpLogOptions) {
+ this.httpLogOptions = Objects.requireNonNull(httpLogOptions, "'httpLogOptions' cannot be null.");
+ return this;
+ }
+
+ /**
+ * Adds the pipeline policy to the HTTP pipeline.
+ *
+ * @param policy the HTTP pipeline policy.
+ * @return the configurable object itself.
+ */
+ public Configurable withPolicy(HttpPipelinePolicy policy) {
+ this.policies.add(Objects.requireNonNull(policy, "'policy' cannot be null."));
+ return this;
+ }
+
+ /**
+ * Sets the retry policy to the HTTP pipeline.
+ *
+ * @param retryPolicy the HTTP pipeline retry policy.
+ * @return the configurable object itself.
+ */
+ public Configurable withRetryPolicy(RetryPolicy retryPolicy) {
+ this.retryPolicy = Objects.requireNonNull(retryPolicy, "'retryPolicy' cannot be null.");
+ return this;
+ }
+
+ /**
+ * Sets the default poll interval, used when service does not provide "Retry-After" header.
+ *
+ * @param defaultPollInterval the default poll interval.
+ * @return the configurable object itself.
+ */
+ public Configurable withDefaultPollInterval(Duration defaultPollInterval) {
+ this.defaultPollInterval = Objects.requireNonNull(defaultPollInterval, "'retryPolicy' cannot be null.");
+ if (this.defaultPollInterval.isNegative()) {
+ throw logger.logExceptionAsError(new IllegalArgumentException("'httpPipeline' cannot be negative"));
+ }
+ return this;
+ }
+
+ /**
+ * Creates an instance of DevTestLabs service API entry point.
+ *
+ * @param credential the credential to use.
+ * @param profile the Azure profile for client.
+ * @return the DevTestLabs service API instance.
+ */
+ public DevTestLabsManager authenticate(TokenCredential credential, AzureProfile profile) {
+ Objects.requireNonNull(credential, "'credential' cannot be null.");
+ Objects.requireNonNull(profile, "'profile' cannot be null.");
+
+ StringBuilder userAgentBuilder = new StringBuilder();
+ userAgentBuilder
+ .append("azsdk-java")
+ .append("-")
+ .append("com.azure.resourcemanager.devtestlabs")
+ .append("/")
+ .append("1.0.0-beta.1");
+ if (!Configuration.getGlobalConfiguration().get("AZURE_TELEMETRY_DISABLED", false)) {
+ userAgentBuilder
+ .append(" (")
+ .append(Configuration.getGlobalConfiguration().get("java.version"))
+ .append("; ")
+ .append(Configuration.getGlobalConfiguration().get("os.name"))
+ .append("; ")
+ .append(Configuration.getGlobalConfiguration().get("os.version"))
+ .append("; auto-generated)");
+ } else {
+ userAgentBuilder.append(" (auto-generated)");
+ }
+
+ if (retryPolicy == null) {
+ retryPolicy = new RetryPolicy("Retry-After", ChronoUnit.SECONDS);
+ }
+ List policies = new ArrayList<>();
+ policies.add(new UserAgentPolicy(userAgentBuilder.toString()));
+ policies.add(new RequestIdPolicy());
+ HttpPolicyProviders.addBeforeRetryPolicies(policies);
+ policies.add(retryPolicy);
+ policies.add(new AddDatePolicy());
+ policies
+ .add(
+ new BearerTokenAuthenticationPolicy(
+ credential, profile.getEnvironment().getManagementEndpoint() + "/.default"));
+ HttpPolicyProviders.addAfterRetryPolicies(policies);
+ policies.add(new HttpLoggingPolicy(httpLogOptions));
+ HttpPipeline httpPipeline =
+ new HttpPipelineBuilder()
+ .httpClient(httpClient)
+ .policies(policies.toArray(new HttpPipelinePolicy[0]))
+ .build();
+ return new DevTestLabsManager(httpPipeline, profile, defaultPollInterval);
+ }
+ }
+
+ /** @return Resource collection API of ProviderOperations. */
+ public ProviderOperations providerOperations() {
+ if (this.providerOperations == null) {
+ this.providerOperations = new ProviderOperationsImpl(clientObject.getProviderOperations(), this);
+ }
+ return providerOperations;
+ }
+
+ /** @return Resource collection API of Labs. */
+ public Labs labs() {
+ if (this.labs == null) {
+ this.labs = new LabsImpl(clientObject.getLabs(), this);
+ }
+ return labs;
+ }
+
+ /** @return Resource collection API of Operations. */
+ public Operations operations() {
+ if (this.operations == null) {
+ this.operations = new OperationsImpl(clientObject.getOperations(), this);
+ }
+ return operations;
+ }
+
+ /** @return Resource collection API of GlobalSchedules. */
+ public GlobalSchedules globalSchedules() {
+ if (this.globalSchedules == null) {
+ this.globalSchedules = new GlobalSchedulesImpl(clientObject.getGlobalSchedules(), this);
+ }
+ return globalSchedules;
+ }
+
+ /** @return Resource collection API of ArtifactSources. */
+ public ArtifactSources artifactSources() {
+ if (this.artifactSources == null) {
+ this.artifactSources = new ArtifactSourcesImpl(clientObject.getArtifactSources(), this);
+ }
+ return artifactSources;
+ }
+
+ /** @return Resource collection API of ArmTemplates. */
+ public ArmTemplates armTemplates() {
+ if (this.armTemplates == null) {
+ this.armTemplates = new ArmTemplatesImpl(clientObject.getArmTemplates(), this);
+ }
+ return armTemplates;
+ }
+
+ /** @return Resource collection API of Artifacts. */
+ public Artifacts artifacts() {
+ if (this.artifacts == null) {
+ this.artifacts = new ArtifactsImpl(clientObject.getArtifacts(), this);
+ }
+ return artifacts;
+ }
+
+ /** @return Resource collection API of Costs. */
+ public Costs costs() {
+ if (this.costs == null) {
+ this.costs = new CostsImpl(clientObject.getCosts(), this);
+ }
+ return costs;
+ }
+
+ /** @return Resource collection API of CustomImages. */
+ public CustomImages customImages() {
+ if (this.customImages == null) {
+ this.customImages = new CustomImagesImpl(clientObject.getCustomImages(), this);
+ }
+ return customImages;
+ }
+
+ /** @return Resource collection API of Formulas. */
+ public Formulas formulas() {
+ if (this.formulas == null) {
+ this.formulas = new FormulasImpl(clientObject.getFormulas(), this);
+ }
+ return formulas;
+ }
+
+ /** @return Resource collection API of GalleryImages. */
+ public GalleryImages galleryImages() {
+ if (this.galleryImages == null) {
+ this.galleryImages = new GalleryImagesImpl(clientObject.getGalleryImages(), this);
+ }
+ return galleryImages;
+ }
+
+ /** @return Resource collection API of NotificationChannels. */
+ public NotificationChannels notificationChannels() {
+ if (this.notificationChannels == null) {
+ this.notificationChannels = new NotificationChannelsImpl(clientObject.getNotificationChannels(), this);
+ }
+ return notificationChannels;
+ }
+
+ /** @return Resource collection API of PolicySets. */
+ public PolicySets policySets() {
+ if (this.policySets == null) {
+ this.policySets = new PolicySetsImpl(clientObject.getPolicySets(), this);
+ }
+ return policySets;
+ }
+
+ /** @return Resource collection API of Policies. */
+ public Policies policies() {
+ if (this.policies == null) {
+ this.policies = new PoliciesImpl(clientObject.getPolicies(), this);
+ }
+ return policies;
+ }
+
+ /** @return Resource collection API of Schedules. */
+ public Schedules schedules() {
+ if (this.schedules == null) {
+ this.schedules = new SchedulesImpl(clientObject.getSchedules(), this);
+ }
+ return schedules;
+ }
+
+ /** @return Resource collection API of ServiceRunners. */
+ public ServiceRunners serviceRunners() {
+ if (this.serviceRunners == null) {
+ this.serviceRunners = new ServiceRunnersImpl(clientObject.getServiceRunners(), this);
+ }
+ return serviceRunners;
+ }
+
+ /** @return Resource collection API of Users. */
+ public Users users() {
+ if (this.users == null) {
+ this.users = new UsersImpl(clientObject.getUsers(), this);
+ }
+ return users;
+ }
+
+ /** @return Resource collection API of Disks. */
+ public Disks disks() {
+ if (this.disks == null) {
+ this.disks = new DisksImpl(clientObject.getDisks(), this);
+ }
+ return disks;
+ }
+
+ /** @return Resource collection API of Environments. */
+ public Environments environments() {
+ if (this.environments == null) {
+ this.environments = new EnvironmentsImpl(clientObject.getEnvironments(), this);
+ }
+ return environments;
+ }
+
+ /** @return Resource collection API of Secrets. */
+ public Secrets secrets() {
+ if (this.secrets == null) {
+ this.secrets = new SecretsImpl(clientObject.getSecrets(), this);
+ }
+ return secrets;
+ }
+
+ /** @return Resource collection API of ServiceFabrics. */
+ public ServiceFabrics serviceFabrics() {
+ if (this.serviceFabrics == null) {
+ this.serviceFabrics = new ServiceFabricsImpl(clientObject.getServiceFabrics(), this);
+ }
+ return serviceFabrics;
+ }
+
+ /** @return Resource collection API of ServiceFabricSchedules. */
+ public ServiceFabricSchedules serviceFabricSchedules() {
+ if (this.serviceFabricSchedules == null) {
+ this.serviceFabricSchedules =
+ new ServiceFabricSchedulesImpl(clientObject.getServiceFabricSchedules(), this);
+ }
+ return serviceFabricSchedules;
+ }
+
+ /** @return Resource collection API of VirtualMachines. */
+ public VirtualMachines virtualMachines() {
+ if (this.virtualMachines == null) {
+ this.virtualMachines = new VirtualMachinesImpl(clientObject.getVirtualMachines(), this);
+ }
+ return virtualMachines;
+ }
+
+ /** @return Resource collection API of VirtualMachineSchedules. */
+ public VirtualMachineSchedules virtualMachineSchedules() {
+ if (this.virtualMachineSchedules == null) {
+ this.virtualMachineSchedules =
+ new VirtualMachineSchedulesImpl(clientObject.getVirtualMachineSchedules(), this);
+ }
+ return virtualMachineSchedules;
+ }
+
+ /** @return Resource collection API of VirtualNetworks. */
+ public VirtualNetworks virtualNetworks() {
+ if (this.virtualNetworks == null) {
+ this.virtualNetworks = new VirtualNetworksImpl(clientObject.getVirtualNetworks(), this);
+ }
+ return virtualNetworks;
+ }
+
+ /**
+ * @return Wrapped service client DevTestLabsClient providing direct access to the underlying auto-generated API
+ * implementation, based on Azure REST API.
+ */
+ public DevTestLabsClient serviceClient() {
+ return this.clientObject;
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ArmTemplatesClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ArmTemplatesClient.java
new file mode 100644
index 000000000000..14fabcf6ad45
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ArmTemplatesClient.java
@@ -0,0 +1,94 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ArmTemplateInner;
+
+/** An instance of this class provides access to all the operations defined in ArmTemplatesClient. */
+public interface ArmTemplatesClient {
+ /**
+ * List azure resource manager templates in a given artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName, String artifactSourceName);
+
+ /**
+ * List azure resource manager templates in a given artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @param expand Specify the $expand query. Example: 'properties($select=displayName)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String artifactSourceName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get azure resource manager template.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @param name The name of the azure resource manager template.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return azure resource manager template.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ArmTemplateInner get(String resourceGroupName, String labName, String artifactSourceName, String name);
+
+ /**
+ * Get azure resource manager template.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @param name The name of the azure resource manager template.
+ * @param expand Specify the $expand query. Example: 'properties($select=displayName)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return azure resource manager template.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName,
+ String labName,
+ String artifactSourceName,
+ String name,
+ String expand,
+ Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ArtifactSourcesClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ArtifactSourcesClient.java
new file mode 100644
index 000000000000..c0dc5ca47d10
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ArtifactSourcesClient.java
@@ -0,0 +1,179 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ArtifactSourceInner;
+import com.azure.resourcemanager.devtestlabs.models.ArtifactSourceFragment;
+
+/** An instance of this class provides access to all the operations defined in ArtifactSourcesClient. */
+public interface ArtifactSourcesClient {
+ /**
+ * List artifact sources in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName);
+
+ /**
+ * List artifact sources in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param expand Specify the $expand query. Example: 'properties($select=displayName)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the artifact source.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return artifact source.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ArtifactSourceInner get(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the artifact source.
+ * @param expand Specify the $expand query. Example: 'properties($select=displayName)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return artifact source.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the artifact source.
+ * @param artifactSource Properties of an artifact source.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return properties of an artifact source.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ArtifactSourceInner createOrUpdate(
+ String resourceGroupName, String labName, String name, ArtifactSourceInner artifactSource);
+
+ /**
+ * Create or replace an existing artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the artifact source.
+ * @param artifactSource Properties of an artifact source.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return properties of an artifact source.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName, String labName, String name, ArtifactSourceInner artifactSource, Context context);
+
+ /**
+ * Delete artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the artifact source.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the artifact source.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Allows modifying tags of artifact sources. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the artifact source.
+ * @param artifactSource Properties of an artifact source.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return properties of an artifact source.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ArtifactSourceInner update(
+ String resourceGroupName, String labName, String name, ArtifactSourceFragment artifactSource);
+
+ /**
+ * Allows modifying tags of artifact sources. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the artifact source.
+ * @param artifactSource Properties of an artifact source.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return properties of an artifact source.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String labName, String name, ArtifactSourceFragment artifactSource, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ArtifactsClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ArtifactsClient.java
new file mode 100644
index 000000000000..84683b96e417
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ArtifactsClient.java
@@ -0,0 +1,142 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ArmTemplateInfoInner;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ArtifactInner;
+import com.azure.resourcemanager.devtestlabs.models.GenerateArmTemplateRequest;
+
+/** An instance of this class provides access to all the operations defined in ArtifactsClient. */
+public interface ArtifactsClient {
+ /**
+ * List artifacts in a given artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName, String artifactSourceName);
+
+ /**
+ * List artifacts in a given artifact source.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @param expand Specify the $expand query. Example: 'properties($select=title)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String artifactSourceName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get artifact.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @param name The name of the artifact.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return artifact.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ArtifactInner get(String resourceGroupName, String labName, String artifactSourceName, String name);
+
+ /**
+ * Get artifact.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @param name The name of the artifact.
+ * @param expand Specify the $expand query. Example: 'properties($select=title)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return artifact.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName,
+ String labName,
+ String artifactSourceName,
+ String name,
+ String expand,
+ Context context);
+
+ /**
+ * Generates an ARM template for the given artifact, uploads the required files to a storage account, and validates
+ * the generated artifact.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @param name The name of the artifact.
+ * @param generateArmTemplateRequest Parameters for generating an ARM template for deploying artifacts.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return information about a generated ARM template.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ArmTemplateInfoInner generateArmTemplate(
+ String resourceGroupName,
+ String labName,
+ String artifactSourceName,
+ String name,
+ GenerateArmTemplateRequest generateArmTemplateRequest);
+
+ /**
+ * Generates an ARM template for the given artifact, uploads the required files to a storage account, and validates
+ * the generated artifact.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param artifactSourceName The name of the artifact source.
+ * @param name The name of the artifact.
+ * @param generateArmTemplateRequest Parameters for generating an ARM template for deploying artifacts.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return information about a generated ARM template.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response generateArmTemplateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String artifactSourceName,
+ String name,
+ GenerateArmTemplateRequest generateArmTemplateRequest,
+ Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/CostsClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/CostsClient.java
new file mode 100644
index 000000000000..08f46abf1cd6
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/CostsClient.java
@@ -0,0 +1,77 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.devtestlabs.fluent.models.LabCostInner;
+
+/** An instance of this class provides access to all the operations defined in CostsClient. */
+public interface CostsClient {
+ /**
+ * Get cost.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the cost.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return cost.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LabCostInner get(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get cost.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the cost.
+ * @param expand Specify the $expand query. Example: 'properties($expand=labCostDetails)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return cost.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing cost.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the cost.
+ * @param labCost A cost item.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a cost item.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LabCostInner createOrUpdate(String resourceGroupName, String labName, String name, LabCostInner labCost);
+
+ /**
+ * Create or replace an existing cost.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the cost.
+ * @param labCost A cost item.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a cost item.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName, String labName, String name, LabCostInner labCost, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/CustomImagesClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/CustomImagesClient.java
new file mode 100644
index 000000000000..f62f57f8cb68
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/CustomImagesClient.java
@@ -0,0 +1,242 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.CustomImageInner;
+import com.azure.resourcemanager.devtestlabs.models.CustomImageFragment;
+
+/** An instance of this class provides access to all the operations defined in CustomImagesClient. */
+public interface CustomImagesClient {
+ /**
+ * List custom images in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName);
+
+ /**
+ * List custom images in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param expand Specify the $expand query. Example: 'properties($select=vm)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get custom image.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return custom image.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ CustomImageInner get(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get custom image.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @param expand Specify the $expand query. Example: 'properties($select=vm)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return custom image.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing custom image. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @param customImage A custom image.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a custom image.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, CustomImageInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String name, CustomImageInner customImage);
+
+ /**
+ * Create or replace an existing custom image. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @param customImage A custom image.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a custom image.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, CustomImageInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String name, CustomImageInner customImage, Context context);
+
+ /**
+ * Create or replace an existing custom image. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @param customImage A custom image.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a custom image.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ CustomImageInner createOrUpdate(
+ String resourceGroupName, String labName, String name, CustomImageInner customImage);
+
+ /**
+ * Create or replace an existing custom image. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @param customImage A custom image.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a custom image.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ CustomImageInner createOrUpdate(
+ String resourceGroupName, String labName, String name, CustomImageInner customImage, Context context);
+
+ /**
+ * Delete custom image. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete custom image. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Delete custom image. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete custom image. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Allows modifying tags of custom images. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @param customImage A custom image.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a custom image.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ CustomImageInner update(String resourceGroupName, String labName, String name, CustomImageFragment customImage);
+
+ /**
+ * Allows modifying tags of custom images. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the custom image.
+ * @param customImage A custom image.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a custom image.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String labName, String name, CustomImageFragment customImage, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/DevTestLabsClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/DevTestLabsClient.java
new file mode 100644
index 000000000000..04b690fea67d
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/DevTestLabsClient.java
@@ -0,0 +1,221 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.http.HttpPipeline;
+import java.time.Duration;
+
+/** The interface for DevTestLabsClient class. */
+public interface DevTestLabsClient {
+ /**
+ * Gets The subscription ID.
+ *
+ * @return the subscriptionId value.
+ */
+ String getSubscriptionId();
+
+ /**
+ * Gets server parameter.
+ *
+ * @return the endpoint value.
+ */
+ String getEndpoint();
+
+ /**
+ * Gets Api Version.
+ *
+ * @return the apiVersion value.
+ */
+ String getApiVersion();
+
+ /**
+ * Gets The HTTP pipeline to send requests through.
+ *
+ * @return the httpPipeline value.
+ */
+ HttpPipeline getHttpPipeline();
+
+ /**
+ * Gets The default poll interval for long-running operation.
+ *
+ * @return the defaultPollInterval value.
+ */
+ Duration getDefaultPollInterval();
+
+ /**
+ * Gets the ProviderOperationsClient object to access its operations.
+ *
+ * @return the ProviderOperationsClient object.
+ */
+ ProviderOperationsClient getProviderOperations();
+
+ /**
+ * Gets the LabsClient object to access its operations.
+ *
+ * @return the LabsClient object.
+ */
+ LabsClient getLabs();
+
+ /**
+ * Gets the OperationsClient object to access its operations.
+ *
+ * @return the OperationsClient object.
+ */
+ OperationsClient getOperations();
+
+ /**
+ * Gets the GlobalSchedulesClient object to access its operations.
+ *
+ * @return the GlobalSchedulesClient object.
+ */
+ GlobalSchedulesClient getGlobalSchedules();
+
+ /**
+ * Gets the ArtifactSourcesClient object to access its operations.
+ *
+ * @return the ArtifactSourcesClient object.
+ */
+ ArtifactSourcesClient getArtifactSources();
+
+ /**
+ * Gets the ArmTemplatesClient object to access its operations.
+ *
+ * @return the ArmTemplatesClient object.
+ */
+ ArmTemplatesClient getArmTemplates();
+
+ /**
+ * Gets the ArtifactsClient object to access its operations.
+ *
+ * @return the ArtifactsClient object.
+ */
+ ArtifactsClient getArtifacts();
+
+ /**
+ * Gets the CostsClient object to access its operations.
+ *
+ * @return the CostsClient object.
+ */
+ CostsClient getCosts();
+
+ /**
+ * Gets the CustomImagesClient object to access its operations.
+ *
+ * @return the CustomImagesClient object.
+ */
+ CustomImagesClient getCustomImages();
+
+ /**
+ * Gets the FormulasClient object to access its operations.
+ *
+ * @return the FormulasClient object.
+ */
+ FormulasClient getFormulas();
+
+ /**
+ * Gets the GalleryImagesClient object to access its operations.
+ *
+ * @return the GalleryImagesClient object.
+ */
+ GalleryImagesClient getGalleryImages();
+
+ /**
+ * Gets the NotificationChannelsClient object to access its operations.
+ *
+ * @return the NotificationChannelsClient object.
+ */
+ NotificationChannelsClient getNotificationChannels();
+
+ /**
+ * Gets the PolicySetsClient object to access its operations.
+ *
+ * @return the PolicySetsClient object.
+ */
+ PolicySetsClient getPolicySets();
+
+ /**
+ * Gets the PoliciesClient object to access its operations.
+ *
+ * @return the PoliciesClient object.
+ */
+ PoliciesClient getPolicies();
+
+ /**
+ * Gets the SchedulesClient object to access its operations.
+ *
+ * @return the SchedulesClient object.
+ */
+ SchedulesClient getSchedules();
+
+ /**
+ * Gets the ServiceRunnersClient object to access its operations.
+ *
+ * @return the ServiceRunnersClient object.
+ */
+ ServiceRunnersClient getServiceRunners();
+
+ /**
+ * Gets the UsersClient object to access its operations.
+ *
+ * @return the UsersClient object.
+ */
+ UsersClient getUsers();
+
+ /**
+ * Gets the DisksClient object to access its operations.
+ *
+ * @return the DisksClient object.
+ */
+ DisksClient getDisks();
+
+ /**
+ * Gets the EnvironmentsClient object to access its operations.
+ *
+ * @return the EnvironmentsClient object.
+ */
+ EnvironmentsClient getEnvironments();
+
+ /**
+ * Gets the SecretsClient object to access its operations.
+ *
+ * @return the SecretsClient object.
+ */
+ SecretsClient getSecrets();
+
+ /**
+ * Gets the ServiceFabricsClient object to access its operations.
+ *
+ * @return the ServiceFabricsClient object.
+ */
+ ServiceFabricsClient getServiceFabrics();
+
+ /**
+ * Gets the ServiceFabricSchedulesClient object to access its operations.
+ *
+ * @return the ServiceFabricSchedulesClient object.
+ */
+ ServiceFabricSchedulesClient getServiceFabricSchedules();
+
+ /**
+ * Gets the VirtualMachinesClient object to access its operations.
+ *
+ * @return the VirtualMachinesClient object.
+ */
+ VirtualMachinesClient getVirtualMachines();
+
+ /**
+ * Gets the VirtualMachineSchedulesClient object to access its operations.
+ *
+ * @return the VirtualMachineSchedulesClient object.
+ */
+ VirtualMachineSchedulesClient getVirtualMachineSchedules();
+
+ /**
+ * Gets the VirtualNetworksClient object to access its operations.
+ *
+ * @return the VirtualNetworksClient object.
+ */
+ VirtualNetworksClient getVirtualNetworks();
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/DisksClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/DisksClient.java
new file mode 100644
index 000000000000..4e6fda42b3e6
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/DisksClient.java
@@ -0,0 +1,435 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.DiskInner;
+import com.azure.resourcemanager.devtestlabs.models.AttachDiskProperties;
+import com.azure.resourcemanager.devtestlabs.models.DetachDiskProperties;
+import com.azure.resourcemanager.devtestlabs.models.DiskFragment;
+
+/** An instance of this class provides access to all the operations defined in DisksClient. */
+public interface DisksClient {
+ /**
+ * List disks in a given user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName, String username);
+
+ /**
+ * List disks in a given user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param expand Specify the $expand query. Example: 'properties($select=diskType)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get disk.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return disk.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DiskInner get(String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Get disk.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param expand Specify the $expand query. Example: 'properties($select=diskType)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return disk.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String username, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing disk. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param disk A Disk.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Disk.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, DiskInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String username, String name, DiskInner disk);
+
+ /**
+ * Create or replace an existing disk. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param disk A Disk.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Disk.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, DiskInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String username, String name, DiskInner disk, Context context);
+
+ /**
+ * Create or replace an existing disk. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param disk A Disk.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Disk.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DiskInner createOrUpdate(String resourceGroupName, String labName, String username, String name, DiskInner disk);
+
+ /**
+ * Create or replace an existing disk. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param disk A Disk.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Disk.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DiskInner createOrUpdate(
+ String resourceGroupName, String labName, String username, String name, DiskInner disk, Context context);
+
+ /**
+ * Delete disk. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(
+ String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Delete disk. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(
+ String resourceGroupName, String labName, String username, String name, Context context);
+
+ /**
+ * Delete disk. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Delete disk. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String username, String name, Context context);
+
+ /**
+ * Allows modifying tags of disks. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param disk A Disk.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Disk.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DiskInner update(String resourceGroupName, String labName, String username, String name, DiskFragment disk);
+
+ /**
+ * Allows modifying tags of disks. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param disk A Disk.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Disk.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String labName, String username, String name, DiskFragment disk, Context context);
+
+ /**
+ * Attach and create the lease of the disk to the virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param attachDiskProperties Properties of the disk to attach.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginAttach(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ AttachDiskProperties attachDiskProperties);
+
+ /**
+ * Attach and create the lease of the disk to the virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param attachDiskProperties Properties of the disk to attach.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginAttach(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ AttachDiskProperties attachDiskProperties,
+ Context context);
+
+ /**
+ * Attach and create the lease of the disk to the virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param attachDiskProperties Properties of the disk to attach.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void attach(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ AttachDiskProperties attachDiskProperties);
+
+ /**
+ * Attach and create the lease of the disk to the virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param attachDiskProperties Properties of the disk to attach.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void attach(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ AttachDiskProperties attachDiskProperties,
+ Context context);
+
+ /**
+ * Detach and break the lease of the disk attached to the virtual machine. This operation can take a while to
+ * complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param detachDiskProperties Properties of the disk to detach.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDetach(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ DetachDiskProperties detachDiskProperties);
+
+ /**
+ * Detach and break the lease of the disk attached to the virtual machine. This operation can take a while to
+ * complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param detachDiskProperties Properties of the disk to detach.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDetach(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ DetachDiskProperties detachDiskProperties,
+ Context context);
+
+ /**
+ * Detach and break the lease of the disk attached to the virtual machine. This operation can take a while to
+ * complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param detachDiskProperties Properties of the disk to detach.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void detach(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ DetachDiskProperties detachDiskProperties);
+
+ /**
+ * Detach and break the lease of the disk attached to the virtual machine. This operation can take a while to
+ * complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the disk.
+ * @param detachDiskProperties Properties of the disk to detach.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void detach(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ DetachDiskProperties detachDiskProperties,
+ Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/EnvironmentsClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/EnvironmentsClient.java
new file mode 100644
index 000000000000..c7cc0d54c506
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/EnvironmentsClient.java
@@ -0,0 +1,274 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.DtlEnvironmentInner;
+import com.azure.resourcemanager.devtestlabs.models.DtlEnvironmentFragment;
+
+/** An instance of this class provides access to all the operations defined in EnvironmentsClient. */
+public interface EnvironmentsClient {
+ /**
+ * List environments in a given user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName, String username);
+
+ /**
+ * List environments in a given user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param expand Specify the $expand query. Example: 'properties($select=deploymentProperties)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get environment.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return environment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DtlEnvironmentInner get(String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Get environment.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @param expand Specify the $expand query. Example: 'properties($select=deploymentProperties)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return environment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String username, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing environment. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @param dtlEnvironment An environment, which is essentially an ARM template deployment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an environment, which is essentially an ARM template deployment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, DtlEnvironmentInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String username, String name, DtlEnvironmentInner dtlEnvironment);
+
+ /**
+ * Create or replace an existing environment. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @param dtlEnvironment An environment, which is essentially an ARM template deployment.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an environment, which is essentially an ARM template deployment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, DtlEnvironmentInner> beginCreateOrUpdate(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ DtlEnvironmentInner dtlEnvironment,
+ Context context);
+
+ /**
+ * Create or replace an existing environment. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @param dtlEnvironment An environment, which is essentially an ARM template deployment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an environment, which is essentially an ARM template deployment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DtlEnvironmentInner createOrUpdate(
+ String resourceGroupName, String labName, String username, String name, DtlEnvironmentInner dtlEnvironment);
+
+ /**
+ * Create or replace an existing environment. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @param dtlEnvironment An environment, which is essentially an ARM template deployment.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an environment, which is essentially an ARM template deployment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DtlEnvironmentInner createOrUpdate(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ DtlEnvironmentInner dtlEnvironment,
+ Context context);
+
+ /**
+ * Delete environment. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(
+ String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Delete environment. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(
+ String resourceGroupName, String labName, String username, String name, Context context);
+
+ /**
+ * Delete environment. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Delete environment. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String username, String name, Context context);
+
+ /**
+ * Allows modifying tags of environments. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @param dtlEnvironment An environment, which is essentially an ARM template deployment.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an environment, which is essentially an ARM template deployment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DtlEnvironmentInner update(
+ String resourceGroupName, String labName, String username, String name, DtlEnvironmentFragment dtlEnvironment);
+
+ /**
+ * Allows modifying tags of environments. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the environment.
+ * @param dtlEnvironment An environment, which is essentially an ARM template deployment.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return an environment, which is essentially an ARM template deployment.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ DtlEnvironmentFragment dtlEnvironment,
+ Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/FormulasClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/FormulasClient.java
new file mode 100644
index 000000000000..e5897892f1d3
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/FormulasClient.java
@@ -0,0 +1,212 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.FormulaInner;
+import com.azure.resourcemanager.devtestlabs.models.FormulaFragment;
+
+/** An instance of this class provides access to all the operations defined in FormulasClient. */
+public interface FormulasClient {
+ /**
+ * List formulas in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName);
+
+ /**
+ * List formulas in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param expand Specify the $expand query. Example: 'properties($select=description)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get formula.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return formula.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FormulaInner get(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get formula.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @param expand Specify the $expand query. Example: 'properties($select=description)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return formula.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing formula. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @param formula A formula for creating a VM, specifying an image base and other parameters.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a formula for creating a VM, specifying an image base and other parameters.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, FormulaInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String name, FormulaInner formula);
+
+ /**
+ * Create or replace an existing formula. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @param formula A formula for creating a VM, specifying an image base and other parameters.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a formula for creating a VM, specifying an image base and other parameters.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, FormulaInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String name, FormulaInner formula, Context context);
+
+ /**
+ * Create or replace an existing formula. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @param formula A formula for creating a VM, specifying an image base and other parameters.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a formula for creating a VM, specifying an image base and other parameters.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FormulaInner createOrUpdate(String resourceGroupName, String labName, String name, FormulaInner formula);
+
+ /**
+ * Create or replace an existing formula. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @param formula A formula for creating a VM, specifying an image base and other parameters.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a formula for creating a VM, specifying an image base and other parameters.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FormulaInner createOrUpdate(
+ String resourceGroupName, String labName, String name, FormulaInner formula, Context context);
+
+ /**
+ * Delete formula.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete formula.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Allows modifying tags of formulas. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @param formula A formula for creating a VM, specifying an image base and other parameters.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a formula for creating a VM, specifying an image base and other parameters.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FormulaInner update(String resourceGroupName, String labName, String name, FormulaFragment formula);
+
+ /**
+ * Allows modifying tags of formulas. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the formula.
+ * @param formula A formula for creating a VM, specifying an image base and other parameters.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a formula for creating a VM, specifying an image base and other parameters.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String labName, String name, FormulaFragment formula, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/GalleryImagesClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/GalleryImagesClient.java
new file mode 100644
index 000000000000..4dde1cab7c18
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/GalleryImagesClient.java
@@ -0,0 +1,52 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.devtestlabs.fluent.models.GalleryImageInner;
+
+/** An instance of this class provides access to all the operations defined in GalleryImagesClient. */
+public interface GalleryImagesClient {
+ /**
+ * List gallery images in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName);
+
+ /**
+ * List gallery images in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param expand Specify the $expand query. Example: 'properties($select=author)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/GlobalSchedulesClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/GlobalSchedulesClient.java
new file mode 100644
index 000000000000..2056c0c2030a
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/GlobalSchedulesClient.java
@@ -0,0 +1,301 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ScheduleInner;
+import com.azure.resourcemanager.devtestlabs.models.RetargetScheduleProperties;
+import com.azure.resourcemanager.devtestlabs.models.ScheduleFragment;
+
+/** An instance of this class provides access to all the operations defined in GlobalSchedulesClient. */
+public interface GlobalSchedulesClient {
+ /**
+ * List schedules in a subscription.
+ *
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * List schedules in a subscription.
+ *
+ * @param expand Specify the $expand query. Example: 'properties($select=status)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String expand, String filter, Integer top, String orderby, Context context);
+
+ /**
+ * List schedules in a resource group.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(String resourceGroupName);
+
+ /**
+ * List schedules in a resource group.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param expand Specify the $expand query. Example: 'properties($select=status)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(
+ String resourceGroupName, String expand, String filter, Integer top, String orderby, Context context);
+
+ /**
+ * Get schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner getByResourceGroup(String resourceGroupName, String name);
+
+ /**
+ * Get schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param expand Specify the $expand query. Example: 'properties($select=status)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getByResourceGroupWithResponse(
+ String resourceGroupName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner createOrUpdate(String resourceGroupName, String name, ScheduleInner schedule);
+
+ /**
+ * Create or replace an existing schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName, String name, ScheduleInner schedule, Context context);
+
+ /**
+ * Delete schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String name);
+
+ /**
+ * Delete schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String name, Context context);
+
+ /**
+ * Allows modifying tags of schedules. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner update(String resourceGroupName, String name, ScheduleFragment schedule);
+
+ /**
+ * Allows modifying tags of schedules. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String name, ScheduleFragment schedule, Context context);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginExecute(String resourceGroupName, String name);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginExecute(String resourceGroupName, String name, Context context);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void execute(String resourceGroupName, String name);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void execute(String resourceGroupName, String name, Context context);
+
+ /**
+ * Updates a schedule's target resource Id. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param retargetScheduleProperties Properties for retargeting a virtual machine schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginRetarget(
+ String resourceGroupName, String name, RetargetScheduleProperties retargetScheduleProperties);
+
+ /**
+ * Updates a schedule's target resource Id. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param retargetScheduleProperties Properties for retargeting a virtual machine schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginRetarget(
+ String resourceGroupName, String name, RetargetScheduleProperties retargetScheduleProperties, Context context);
+
+ /**
+ * Updates a schedule's target resource Id. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param retargetScheduleProperties Properties for retargeting a virtual machine schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void retarget(String resourceGroupName, String name, RetargetScheduleProperties retargetScheduleProperties);
+
+ /**
+ * Updates a schedule's target resource Id. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the schedule.
+ * @param retargetScheduleProperties Properties for retargeting a virtual machine schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void retarget(
+ String resourceGroupName, String name, RetargetScheduleProperties retargetScheduleProperties, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/LabsClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/LabsClient.java
new file mode 100644
index 000000000000..7c67e3a3e40d
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/LabsClient.java
@@ -0,0 +1,561 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.GenerateUploadUriResponseInner;
+import com.azure.resourcemanager.devtestlabs.fluent.models.LabInner;
+import com.azure.resourcemanager.devtestlabs.fluent.models.LabVhdInner;
+import com.azure.resourcemanager.devtestlabs.models.ExportResourceUsageParameters;
+import com.azure.resourcemanager.devtestlabs.models.GenerateUploadUriParameter;
+import com.azure.resourcemanager.devtestlabs.models.ImportLabVirtualMachineRequest;
+import com.azure.resourcemanager.devtestlabs.models.LabFragment;
+import com.azure.resourcemanager.devtestlabs.models.LabVirtualMachineCreationParameter;
+
+/** An instance of this class provides access to all the operations defined in LabsClient. */
+public interface LabsClient {
+ /**
+ * List labs in a subscription.
+ *
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * List labs in a subscription.
+ *
+ * @param expand Specify the $expand query. Example: 'properties($select=defaultStorageAccount)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String expand, String filter, Integer top, String orderby, Context context);
+
+ /**
+ * List labs in a resource group.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(String resourceGroupName);
+
+ /**
+ * List labs in a resource group.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param expand Specify the $expand query. Example: 'properties($select=defaultStorageAccount)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(
+ String resourceGroupName, String expand, String filter, Integer top, String orderby, Context context);
+
+ /**
+ * Get lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return lab.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LabInner getByResourceGroup(String resourceGroupName, String name);
+
+ /**
+ * Get lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param expand Specify the $expand query. Example: 'properties($select=defaultStorageAccount)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return lab.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getByResourceGroupWithResponse(
+ String resourceGroupName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param lab A lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a lab.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, LabInner> beginCreateOrUpdate(String resourceGroupName, String name, LabInner lab);
+
+ /**
+ * Create or replace an existing lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param lab A lab.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a lab.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, LabInner> beginCreateOrUpdate(
+ String resourceGroupName, String name, LabInner lab, Context context);
+
+ /**
+ * Create or replace an existing lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param lab A lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a lab.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LabInner createOrUpdate(String resourceGroupName, String name, LabInner lab);
+
+ /**
+ * Create or replace an existing lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param lab A lab.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a lab.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LabInner createOrUpdate(String resourceGroupName, String name, LabInner lab, Context context);
+
+ /**
+ * Delete lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(String resourceGroupName, String name);
+
+ /**
+ * Delete lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(String resourceGroupName, String name, Context context);
+
+ /**
+ * Delete lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String name);
+
+ /**
+ * Delete lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String name, Context context);
+
+ /**
+ * Allows modifying tags of labs. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param lab A lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a lab.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LabInner update(String resourceGroupName, String name, LabFragment lab);
+
+ /**
+ * Allows modifying tags of labs. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param lab A lab.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a lab.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(String resourceGroupName, String name, LabFragment lab, Context context);
+
+ /**
+ * Claim a random claimable virtual machine in the lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginClaimAnyVm(String resourceGroupName, String name);
+
+ /**
+ * Claim a random claimable virtual machine in the lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginClaimAnyVm(String resourceGroupName, String name, Context context);
+
+ /**
+ * Claim a random claimable virtual machine in the lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void claimAnyVm(String resourceGroupName, String name);
+
+ /**
+ * Claim a random claimable virtual machine in the lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void claimAnyVm(String resourceGroupName, String name, Context context);
+
+ /**
+ * Create virtual machines in a lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param labVirtualMachineCreationParameter Properties for creating a virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginCreateEnvironment(
+ String resourceGroupName, String name, LabVirtualMachineCreationParameter labVirtualMachineCreationParameter);
+
+ /**
+ * Create virtual machines in a lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param labVirtualMachineCreationParameter Properties for creating a virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginCreateEnvironment(
+ String resourceGroupName,
+ String name,
+ LabVirtualMachineCreationParameter labVirtualMachineCreationParameter,
+ Context context);
+
+ /**
+ * Create virtual machines in a lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param labVirtualMachineCreationParameter Properties for creating a virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void createEnvironment(
+ String resourceGroupName, String name, LabVirtualMachineCreationParameter labVirtualMachineCreationParameter);
+
+ /**
+ * Create virtual machines in a lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param labVirtualMachineCreationParameter Properties for creating a virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void createEnvironment(
+ String resourceGroupName,
+ String name,
+ LabVirtualMachineCreationParameter labVirtualMachineCreationParameter,
+ Context context);
+
+ /**
+ * Exports the lab resource usage into a storage account This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param exportResourceUsageParameters The parameters of the export operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginExportResourceUsage(
+ String resourceGroupName, String name, ExportResourceUsageParameters exportResourceUsageParameters);
+
+ /**
+ * Exports the lab resource usage into a storage account This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param exportResourceUsageParameters The parameters of the export operation.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginExportResourceUsage(
+ String resourceGroupName,
+ String name,
+ ExportResourceUsageParameters exportResourceUsageParameters,
+ Context context);
+
+ /**
+ * Exports the lab resource usage into a storage account This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param exportResourceUsageParameters The parameters of the export operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void exportResourceUsage(
+ String resourceGroupName, String name, ExportResourceUsageParameters exportResourceUsageParameters);
+
+ /**
+ * Exports the lab resource usage into a storage account This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param exportResourceUsageParameters The parameters of the export operation.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void exportResourceUsage(
+ String resourceGroupName,
+ String name,
+ ExportResourceUsageParameters exportResourceUsageParameters,
+ Context context);
+
+ /**
+ * Generate a URI for uploading custom disk images to a Lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param generateUploadUriParameter Properties for generating an upload URI.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return response body for generating an upload URI.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ GenerateUploadUriResponseInner generateUploadUri(
+ String resourceGroupName, String name, GenerateUploadUriParameter generateUploadUriParameter);
+
+ /**
+ * Generate a URI for uploading custom disk images to a Lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param generateUploadUriParameter Properties for generating an upload URI.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return response body for generating an upload URI.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response generateUploadUriWithResponse(
+ String resourceGroupName, String name, GenerateUploadUriParameter generateUploadUriParameter, Context context);
+
+ /**
+ * Import a virtual machine into a different lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param importLabVirtualMachineRequest This represents the payload required to import a virtual machine from a
+ * different lab into the current one.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginImportVirtualMachine(
+ String resourceGroupName, String name, ImportLabVirtualMachineRequest importLabVirtualMachineRequest);
+
+ /**
+ * Import a virtual machine into a different lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param importLabVirtualMachineRequest This represents the payload required to import a virtual machine from a
+ * different lab into the current one.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginImportVirtualMachine(
+ String resourceGroupName,
+ String name,
+ ImportLabVirtualMachineRequest importLabVirtualMachineRequest,
+ Context context);
+
+ /**
+ * Import a virtual machine into a different lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param importLabVirtualMachineRequest This represents the payload required to import a virtual machine from a
+ * different lab into the current one.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void importVirtualMachine(
+ String resourceGroupName, String name, ImportLabVirtualMachineRequest importLabVirtualMachineRequest);
+
+ /**
+ * Import a virtual machine into a different lab. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param importLabVirtualMachineRequest This represents the payload required to import a virtual machine from a
+ * different lab into the current one.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void importVirtualMachine(
+ String resourceGroupName,
+ String name,
+ ImportLabVirtualMachineRequest importLabVirtualMachineRequest,
+ Context context);
+
+ /**
+ * List disk images available for custom image creation.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listVhds(String resourceGroupName, String name);
+
+ /**
+ * List disk images available for custom image creation.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param name The name of the lab.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listVhds(String resourceGroupName, String name, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/NotificationChannelsClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/NotificationChannelsClient.java
new file mode 100644
index 000000000000..2cdf8ee32c5e
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/NotificationChannelsClient.java
@@ -0,0 +1,219 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.devtestlabs.fluent.models.NotificationChannelInner;
+import com.azure.resourcemanager.devtestlabs.models.NotificationChannelFragment;
+import com.azure.resourcemanager.devtestlabs.models.NotifyParameters;
+
+/** An instance of this class provides access to all the operations defined in NotificationChannelsClient. */
+public interface NotificationChannelsClient {
+ /**
+ * List notification channels in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName);
+
+ /**
+ * List notification channels in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param expand Specify the $expand query. Example: 'properties($select=webHookUrl)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get notification channel.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notification channel.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return notification channel.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ NotificationChannelInner get(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get notification channel.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notification channel.
+ * @param expand Specify the $expand query. Example: 'properties($select=webHookUrl)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return notification channel.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing notification channel.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notification channel.
+ * @param notificationChannel A notification.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a notification.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ NotificationChannelInner createOrUpdate(
+ String resourceGroupName, String labName, String name, NotificationChannelInner notificationChannel);
+
+ /**
+ * Create or replace an existing notification channel.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notification channel.
+ * @param notificationChannel A notification.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a notification.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String name,
+ NotificationChannelInner notificationChannel,
+ Context context);
+
+ /**
+ * Delete notification channel.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notification channel.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete notification channel.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notification channel.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Allows modifying tags of notification channels. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notification channel.
+ * @param notificationChannel A notification.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a notification.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ NotificationChannelInner update(
+ String resourceGroupName, String labName, String name, NotificationChannelFragment notificationChannel);
+
+ /**
+ * Allows modifying tags of notification channels. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notification channel.
+ * @param notificationChannel A notification.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a notification.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String name,
+ NotificationChannelFragment notificationChannel,
+ Context context);
+
+ /**
+ * Send notification to provided channel.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notification channel.
+ * @param notifyParameters Properties for generating a Notification.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void notify(String resourceGroupName, String labName, String name, NotifyParameters notifyParameters);
+
+ /**
+ * Send notification to provided channel.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the notification channel.
+ * @param notifyParameters Properties for generating a Notification.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response notifyWithResponse(
+ String resourceGroupName, String labName, String name, NotifyParameters notifyParameters, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/OperationsClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/OperationsClient.java
new file mode 100644
index 000000000000..de71e11a3351
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/OperationsClient.java
@@ -0,0 +1,41 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.devtestlabs.fluent.models.OperationResultInner;
+
+/** An instance of this class provides access to all the operations defined in OperationsClient. */
+public interface OperationsClient {
+ /**
+ * Get operation.
+ *
+ * @param locationName The name of the location.
+ * @param name The name of the operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return operation.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ OperationResultInner get(String locationName, String name);
+
+ /**
+ * Get operation.
+ *
+ * @param locationName The name of the location.
+ * @param name The name of the operation.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return operation.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String locationName, String name, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/PoliciesClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/PoliciesClient.java
new file mode 100644
index 000000000000..375754a907f0
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/PoliciesClient.java
@@ -0,0 +1,201 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.devtestlabs.fluent.models.PolicyInner;
+import com.azure.resourcemanager.devtestlabs.models.PolicyFragment;
+
+/** An instance of this class provides access to all the operations defined in PoliciesClient. */
+public interface PoliciesClient {
+ /**
+ * List policies in a given policy set.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName, String policySetName);
+
+ /**
+ * List policies in a given policy set.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @param expand Specify the $expand query. Example: 'properties($select=description)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String policySetName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get policy.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @param name The name of the policy.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return policy.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ PolicyInner get(String resourceGroupName, String labName, String policySetName, String name);
+
+ /**
+ * Get policy.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @param name The name of the policy.
+ * @param expand Specify the $expand query. Example: 'properties($select=description)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return policy.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String policySetName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing policy.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @param name The name of the policy.
+ * @param policy A Policy.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Policy.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ PolicyInner createOrUpdate(
+ String resourceGroupName, String labName, String policySetName, String name, PolicyInner policy);
+
+ /**
+ * Create or replace an existing policy.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @param name The name of the policy.
+ * @param policy A Policy.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Policy.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String policySetName,
+ String name,
+ PolicyInner policy,
+ Context context);
+
+ /**
+ * Delete policy.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @param name The name of the policy.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String policySetName, String name);
+
+ /**
+ * Delete policy.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @param name The name of the policy.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(
+ String resourceGroupName, String labName, String policySetName, String name, Context context);
+
+ /**
+ * Allows modifying tags of policies. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @param name The name of the policy.
+ * @param policy A Policy.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Policy.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ PolicyInner update(
+ String resourceGroupName, String labName, String policySetName, String name, PolicyFragment policy);
+
+ /**
+ * Allows modifying tags of policies. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param policySetName The name of the policy set.
+ * @param name The name of the policy.
+ * @param policy A Policy.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Policy.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String policySetName,
+ String name,
+ PolicyFragment policy,
+ Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/PolicySetsClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/PolicySetsClient.java
new file mode 100644
index 000000000000..41aec72bb87e
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/PolicySetsClient.java
@@ -0,0 +1,52 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.devtestlabs.fluent.models.EvaluatePoliciesResponseInner;
+import com.azure.resourcemanager.devtestlabs.models.EvaluatePoliciesRequest;
+
+/** An instance of this class provides access to all the operations defined in PolicySetsClient. */
+public interface PolicySetsClient {
+ /**
+ * Evaluates lab policy.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the policy set.
+ * @param evaluatePoliciesRequest Request body for evaluating a policy set.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return response body for evaluating a policy set.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ EvaluatePoliciesResponseInner evaluatePolicies(
+ String resourceGroupName, String labName, String name, EvaluatePoliciesRequest evaluatePoliciesRequest);
+
+ /**
+ * Evaluates lab policy.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the policy set.
+ * @param evaluatePoliciesRequest Request body for evaluating a policy set.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return response body for evaluating a policy set.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response evaluatePoliciesWithResponse(
+ String resourceGroupName,
+ String labName,
+ String name,
+ EvaluatePoliciesRequest evaluatePoliciesRequest,
+ Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ProviderOperationsClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ProviderOperationsClient.java
new file mode 100644
index 000000000000..8b5762ace47c
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ProviderOperationsClient.java
@@ -0,0 +1,36 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.devtestlabs.fluent.models.OperationMetadataInner;
+
+/** An instance of this class provides access to all the operations defined in ProviderOperationsClient. */
+public interface ProviderOperationsClient {
+ /**
+ * Result of the request to list REST API operations.
+ *
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return result of the request to list REST API operations.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Result of the request to list REST API operations.
+ *
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return result of the request to list REST API operations.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/SchedulesClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/SchedulesClient.java
new file mode 100644
index 000000000000..ea32206bbdd6
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/SchedulesClient.java
@@ -0,0 +1,265 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ScheduleInner;
+import com.azure.resourcemanager.devtestlabs.models.ScheduleFragment;
+
+/** An instance of this class provides access to all the operations defined in SchedulesClient. */
+public interface SchedulesClient {
+ /**
+ * List schedules in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName);
+
+ /**
+ * List schedules in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param expand Specify the $expand query. Example: 'properties($select=status)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner get(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @param expand Specify the $expand query. Example: 'properties($select=status)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner createOrUpdate(String resourceGroupName, String labName, String name, ScheduleInner schedule);
+
+ /**
+ * Create or replace an existing schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName, String labName, String name, ScheduleInner schedule, Context context);
+
+ /**
+ * Delete schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Allows modifying tags of schedules. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner update(String resourceGroupName, String labName, String name, ScheduleFragment schedule);
+
+ /**
+ * Allows modifying tags of schedules. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String labName, String name, ScheduleFragment schedule, Context context);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginExecute(String resourceGroupName, String labName, String name);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginExecute(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void execute(String resourceGroupName, String labName, String name);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void execute(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Lists all applicable schedules.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listApplicable(String resourceGroupName, String labName, String name);
+
+ /**
+ * Lists all applicable schedules.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listApplicable(String resourceGroupName, String labName, String name, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/SecretsClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/SecretsClient.java
new file mode 100644
index 000000000000..4eefb92a8939
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/SecretsClient.java
@@ -0,0 +1,227 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.SecretInner;
+import com.azure.resourcemanager.devtestlabs.models.SecretFragment;
+
+/** An instance of this class provides access to all the operations defined in SecretsClient. */
+public interface SecretsClient {
+ /**
+ * List secrets in a given user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName, String username);
+
+ /**
+ * List secrets in a given user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param expand Specify the $expand query. Example: 'properties($select=value)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get secret.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the secret.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return secret.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SecretInner get(String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Get secret.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the secret.
+ * @param expand Specify the $expand query. Example: 'properties($select=value)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return secret.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String username, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing secret. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the secret.
+ * @param secret A secret.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a secret.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, SecretInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String username, String name, SecretInner secret);
+
+ /**
+ * Create or replace an existing secret. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the secret.
+ * @param secret A secret.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a secret.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, SecretInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String username, String name, SecretInner secret, Context context);
+
+ /**
+ * Create or replace an existing secret. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the secret.
+ * @param secret A secret.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a secret.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SecretInner createOrUpdate(
+ String resourceGroupName, String labName, String username, String name, SecretInner secret);
+
+ /**
+ * Create or replace an existing secret. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the secret.
+ * @param secret A secret.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a secret.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SecretInner createOrUpdate(
+ String resourceGroupName, String labName, String username, String name, SecretInner secret, Context context);
+
+ /**
+ * Delete secret.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the secret.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Delete secret.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the secret.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(
+ String resourceGroupName, String labName, String username, String name, Context context);
+
+ /**
+ * Allows modifying tags of secrets. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the secret.
+ * @param secret A secret.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a secret.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SecretInner update(String resourceGroupName, String labName, String username, String name, SecretFragment secret);
+
+ /**
+ * Allows modifying tags of secrets. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the secret.
+ * @param secret A secret.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a secret.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String labName, String username, String name, SecretFragment secret, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ServiceFabricSchedulesClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ServiceFabricSchedulesClient.java
new file mode 100644
index 000000000000..76f59363278b
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ServiceFabricSchedulesClient.java
@@ -0,0 +1,315 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ScheduleInner;
+import com.azure.resourcemanager.devtestlabs.models.ScheduleFragment;
+
+/** An instance of this class provides access to all the operations defined in ServiceFabricSchedulesClient. */
+public interface ServiceFabricSchedulesClient {
+ /**
+ * List schedules in a given service fabric.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName, String labName, String username, String serviceFabricName);
+
+ /**
+ * List schedules in a given service fabric.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param expand Specify the $expand query. Example: 'properties($select=status)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String serviceFabricName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner get(String resourceGroupName, String labName, String username, String serviceFabricName, String name);
+
+ /**
+ * Get schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @param expand Specify the $expand query. Example: 'properties($select=status)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String serviceFabricName,
+ String name,
+ String expand,
+ Context context);
+
+ /**
+ * Create or replace an existing schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner createOrUpdate(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String serviceFabricName,
+ String name,
+ ScheduleInner schedule);
+
+ /**
+ * Create or replace an existing schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String serviceFabricName,
+ String name,
+ ScheduleInner schedule,
+ Context context);
+
+ /**
+ * Delete schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String username, String serviceFabricName, String name);
+
+ /**
+ * Delete schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String serviceFabricName,
+ String name,
+ Context context);
+
+ /**
+ * Allows modifying tags of schedules. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner update(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String serviceFabricName,
+ String name,
+ ScheduleFragment schedule);
+
+ /**
+ * Allows modifying tags of schedules. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String serviceFabricName,
+ String name,
+ ScheduleFragment schedule,
+ Context context);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginExecute(
+ String resourceGroupName, String labName, String username, String serviceFabricName, String name);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginExecute(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String serviceFabricName,
+ String name,
+ Context context);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void execute(String resourceGroupName, String labName, String username, String serviceFabricName, String name);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param serviceFabricName The name of the service fabric.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void execute(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String serviceFabricName,
+ String name,
+ Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ServiceFabricsClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ServiceFabricsClient.java
new file mode 100644
index 000000000000..dfd47c899d69
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ServiceFabricsClient.java
@@ -0,0 +1,432 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ApplicableScheduleInner;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ServiceFabricInner;
+import com.azure.resourcemanager.devtestlabs.models.ServiceFabricFragment;
+
+/** An instance of this class provides access to all the operations defined in ServiceFabricsClient. */
+public interface ServiceFabricsClient {
+ /**
+ * List service fabrics in a given user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName, String username);
+
+ /**
+ * List service fabrics in a given user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param expand Specify the $expand query. Example: 'properties($expand=applicableSchedule)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get service fabric.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return service fabric.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ServiceFabricInner get(String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Get service fabric.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param expand Specify the $expand query. Example: 'properties($expand=applicableSchedule)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return service fabric.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String username, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param serviceFabric A Service Fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Service Fabric.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, ServiceFabricInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String username, String name, ServiceFabricInner serviceFabric);
+
+ /**
+ * Create or replace an existing service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param serviceFabric A Service Fabric.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Service Fabric.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, ServiceFabricInner> beginCreateOrUpdate(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ ServiceFabricInner serviceFabric,
+ Context context);
+
+ /**
+ * Create or replace an existing service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param serviceFabric A Service Fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Service Fabric.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ServiceFabricInner createOrUpdate(
+ String resourceGroupName, String labName, String username, String name, ServiceFabricInner serviceFabric);
+
+ /**
+ * Create or replace an existing service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param serviceFabric A Service Fabric.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Service Fabric.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ServiceFabricInner createOrUpdate(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ ServiceFabricInner serviceFabric,
+ Context context);
+
+ /**
+ * Delete service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(
+ String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Delete service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(
+ String resourceGroupName, String labName, String username, String name, Context context);
+
+ /**
+ * Delete service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Delete service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String username, String name, Context context);
+
+ /**
+ * Allows modifying tags of service fabrics. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param serviceFabric A Service Fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Service Fabric.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ServiceFabricInner update(
+ String resourceGroupName, String labName, String username, String name, ServiceFabricFragment serviceFabric);
+
+ /**
+ * Allows modifying tags of service fabrics. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param serviceFabric A Service Fabric.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a Service Fabric.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String username,
+ String name,
+ ServiceFabricFragment serviceFabric,
+ Context context);
+
+ /**
+ * Lists the applicable start/stop schedules, if any.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedules applicable to a virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ApplicableScheduleInner listApplicableSchedules(
+ String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Lists the applicable start/stop schedules, if any.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedules applicable to a virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listApplicableSchedulesWithResponse(
+ String resourceGroupName, String labName, String username, String name, Context context);
+
+ /**
+ * Start a service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginStart(
+ String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Start a service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginStart(
+ String resourceGroupName, String labName, String username, String name, Context context);
+
+ /**
+ * Start a service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void start(String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Start a service fabric. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void start(String resourceGroupName, String labName, String username, String name, Context context);
+
+ /**
+ * Stop a service fabric This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginStop(
+ String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Stop a service fabric This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginStop(
+ String resourceGroupName, String labName, String username, String name, Context context);
+
+ /**
+ * Stop a service fabric This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void stop(String resourceGroupName, String labName, String username, String name);
+
+ /**
+ * Stop a service fabric This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param username The name of the user profile.
+ * @param name The name of the service fabric.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void stop(String resourceGroupName, String labName, String username, String name, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ServiceRunnersClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ServiceRunnersClient.java
new file mode 100644
index 000000000000..bd2b2736a4cb
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/ServiceRunnersClient.java
@@ -0,0 +1,105 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ServiceRunnerInner;
+
+/** An instance of this class provides access to all the operations defined in ServiceRunnersClient. */
+public interface ServiceRunnersClient {
+ /**
+ * Get service runner.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the service runner.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return service runner.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ServiceRunnerInner get(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get service runner.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the service runner.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return service runner.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Create or replace an existing service runner.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the service runner.
+ * @param serviceRunner A container for a managed identity to execute DevTest lab services.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a container for a managed identity to execute DevTest lab services.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ServiceRunnerInner createOrUpdate(
+ String resourceGroupName, String labName, String name, ServiceRunnerInner serviceRunner);
+
+ /**
+ * Create or replace an existing service runner.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the service runner.
+ * @param serviceRunner A container for a managed identity to execute DevTest lab services.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a container for a managed identity to execute DevTest lab services.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName, String labName, String name, ServiceRunnerInner serviceRunner, Context context);
+
+ /**
+ * Delete service runner.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the service runner.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete service runner.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the service runner.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(String resourceGroupName, String labName, String name, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/UsersClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/UsersClient.java
new file mode 100644
index 000000000000..4b11461cecb0
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/UsersClient.java
@@ -0,0 +1,240 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.UserInner;
+import com.azure.resourcemanager.devtestlabs.models.UserFragment;
+
+/** An instance of this class provides access to all the operations defined in UsersClient. */
+public interface UsersClient {
+ /**
+ * List user profiles in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName);
+
+ /**
+ * List user profiles in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param expand Specify the $expand query. Example: 'properties($select=identity)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return user profile.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ UserInner get(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get user profile.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @param expand Specify the $expand query. Example: 'properties($select=identity)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return user profile.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing user profile. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @param user Profile of a lab user.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return profile of a lab user.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, UserInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String name, UserInner user);
+
+ /**
+ * Create or replace an existing user profile. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @param user Profile of a lab user.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return profile of a lab user.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, UserInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String name, UserInner user, Context context);
+
+ /**
+ * Create or replace an existing user profile. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @param user Profile of a lab user.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return profile of a lab user.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ UserInner createOrUpdate(String resourceGroupName, String labName, String name, UserInner user);
+
+ /**
+ * Create or replace an existing user profile. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @param user Profile of a lab user.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return profile of a lab user.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ UserInner createOrUpdate(String resourceGroupName, String labName, String name, UserInner user, Context context);
+
+ /**
+ * Delete user profile. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete user profile. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Delete user profile. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete user profile. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Allows modifying tags of user profiles. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @param user Profile of a lab user.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return profile of a lab user.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ UserInner update(String resourceGroupName, String labName, String name, UserFragment user);
+
+ /**
+ * Allows modifying tags of user profiles. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the user profile.
+ * @param user Profile of a lab user.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return profile of a lab user.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String labName, String name, UserFragment user, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/VirtualMachineSchedulesClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/VirtualMachineSchedulesClient.java
new file mode 100644
index 000000000000..f65bbd0104c7
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/VirtualMachineSchedulesClient.java
@@ -0,0 +1,270 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ScheduleInner;
+import com.azure.resourcemanager.devtestlabs.models.ScheduleFragment;
+
+/** An instance of this class provides access to all the operations defined in VirtualMachineSchedulesClient. */
+public interface VirtualMachineSchedulesClient {
+ /**
+ * List schedules in a given virtual machine.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName, String virtualMachineName);
+
+ /**
+ * List schedules in a given virtual machine.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param expand Specify the $expand query. Example: 'properties($select=status)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String virtualMachineName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner get(String resourceGroupName, String labName, String virtualMachineName, String name);
+
+ /**
+ * Get schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @param expand Specify the $expand query. Example: 'properties($select=status)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName,
+ String labName,
+ String virtualMachineName,
+ String name,
+ String expand,
+ Context context);
+
+ /**
+ * Create or replace an existing schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner createOrUpdate(
+ String resourceGroupName, String labName, String virtualMachineName, String name, ScheduleInner schedule);
+
+ /**
+ * Create or replace an existing schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String virtualMachineName,
+ String name,
+ ScheduleInner schedule,
+ Context context);
+
+ /**
+ * Delete schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String virtualMachineName, String name);
+
+ /**
+ * Delete schedule.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response deleteWithResponse(
+ String resourceGroupName, String labName, String virtualMachineName, String name, Context context);
+
+ /**
+ * Allows modifying tags of schedules. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ScheduleInner update(
+ String resourceGroupName, String labName, String virtualMachineName, String name, ScheduleFragment schedule);
+
+ /**
+ * Allows modifying tags of schedules. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @param schedule A schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a schedule.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String virtualMachineName,
+ String name,
+ ScheduleFragment schedule,
+ Context context);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginExecute(
+ String resourceGroupName, String labName, String virtualMachineName, String name);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginExecute(
+ String resourceGroupName, String labName, String virtualMachineName, String name, Context context);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void execute(String resourceGroupName, String labName, String virtualMachineName, String name);
+
+ /**
+ * Execute a schedule. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param virtualMachineName The name of the virtual machine.
+ * @param name The name of the schedule.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void execute(String resourceGroupName, String labName, String virtualMachineName, String name, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/VirtualMachinesClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/VirtualMachinesClient.java
new file mode 100644
index 000000000000..317f3a8544ea
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/VirtualMachinesClient.java
@@ -0,0 +1,1011 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.ApplicableScheduleInner;
+import com.azure.resourcemanager.devtestlabs.fluent.models.LabVirtualMachineInner;
+import com.azure.resourcemanager.devtestlabs.fluent.models.RdpConnectionInner;
+import com.azure.resourcemanager.devtestlabs.models.ApplyArtifactsRequest;
+import com.azure.resourcemanager.devtestlabs.models.DataDiskProperties;
+import com.azure.resourcemanager.devtestlabs.models.DetachDataDiskProperties;
+import com.azure.resourcemanager.devtestlabs.models.LabVirtualMachineFragment;
+import com.azure.resourcemanager.devtestlabs.models.ResizeLabVirtualMachineProperties;
+
+/** An instance of this class provides access to all the operations defined in VirtualMachinesClient. */
+public interface VirtualMachinesClient {
+ /**
+ * List virtual machines in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName);
+
+ /**
+ * List virtual machines in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param expand Specify the $expand query. Example:
+ * 'properties($expand=artifacts,computeVm,networkInterface,applicableSchedule)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get virtual machine.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LabVirtualMachineInner get(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get virtual machine.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param expand Specify the $expand query. Example:
+ * 'properties($expand=artifacts,computeVm,networkInterface,applicableSchedule)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param labVirtualMachine A virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, LabVirtualMachineInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String name, LabVirtualMachineInner labVirtualMachine);
+
+ /**
+ * Create or replace an existing virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param labVirtualMachine A virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, LabVirtualMachineInner> beginCreateOrUpdate(
+ String resourceGroupName,
+ String labName,
+ String name,
+ LabVirtualMachineInner labVirtualMachine,
+ Context context);
+
+ /**
+ * Create or replace an existing virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param labVirtualMachine A virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LabVirtualMachineInner createOrUpdate(
+ String resourceGroupName, String labName, String name, LabVirtualMachineInner labVirtualMachine);
+
+ /**
+ * Create or replace an existing virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param labVirtualMachine A virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LabVirtualMachineInner createOrUpdate(
+ String resourceGroupName,
+ String labName,
+ String name,
+ LabVirtualMachineInner labVirtualMachine,
+ Context context);
+
+ /**
+ * Delete virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Delete virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Allows modifying tags of virtual machines. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param labVirtualMachine A virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LabVirtualMachineInner update(
+ String resourceGroupName, String labName, String name, LabVirtualMachineFragment labVirtualMachine);
+
+ /**
+ * Allows modifying tags of virtual machines. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param labVirtualMachine A virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName,
+ String labName,
+ String name,
+ LabVirtualMachineFragment labVirtualMachine,
+ Context context);
+
+ /**
+ * Attach a new or existing data disk to virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param dataDiskProperties Request body for adding a new or existing data disk to a virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginAddDataDisk(
+ String resourceGroupName, String labName, String name, DataDiskProperties dataDiskProperties);
+
+ /**
+ * Attach a new or existing data disk to virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param dataDiskProperties Request body for adding a new or existing data disk to a virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginAddDataDisk(
+ String resourceGroupName, String labName, String name, DataDiskProperties dataDiskProperties, Context context);
+
+ /**
+ * Attach a new or existing data disk to virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param dataDiskProperties Request body for adding a new or existing data disk to a virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void addDataDisk(String resourceGroupName, String labName, String name, DataDiskProperties dataDiskProperties);
+
+ /**
+ * Attach a new or existing data disk to virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param dataDiskProperties Request body for adding a new or existing data disk to a virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void addDataDisk(
+ String resourceGroupName, String labName, String name, DataDiskProperties dataDiskProperties, Context context);
+
+ /**
+ * Apply artifacts to virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param applyArtifactsRequest Request body for applying artifacts to a virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginApplyArtifacts(
+ String resourceGroupName, String labName, String name, ApplyArtifactsRequest applyArtifactsRequest);
+
+ /**
+ * Apply artifacts to virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param applyArtifactsRequest Request body for applying artifacts to a virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginApplyArtifacts(
+ String resourceGroupName,
+ String labName,
+ String name,
+ ApplyArtifactsRequest applyArtifactsRequest,
+ Context context);
+
+ /**
+ * Apply artifacts to virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param applyArtifactsRequest Request body for applying artifacts to a virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void applyArtifacts(
+ String resourceGroupName, String labName, String name, ApplyArtifactsRequest applyArtifactsRequest);
+
+ /**
+ * Apply artifacts to virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param applyArtifactsRequest Request body for applying artifacts to a virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void applyArtifacts(
+ String resourceGroupName,
+ String labName,
+ String name,
+ ApplyArtifactsRequest applyArtifactsRequest,
+ Context context);
+
+ /**
+ * Take ownership of an existing virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginClaim(String resourceGroupName, String labName, String name);
+
+ /**
+ * Take ownership of an existing virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginClaim(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Take ownership of an existing virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void claim(String resourceGroupName, String labName, String name);
+
+ /**
+ * Take ownership of an existing virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void claim(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Detach the specified disk from the virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param detachDataDiskProperties Request body for detaching data disk from a virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDetachDataDisk(
+ String resourceGroupName, String labName, String name, DetachDataDiskProperties detachDataDiskProperties);
+
+ /**
+ * Detach the specified disk from the virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param detachDataDiskProperties Request body for detaching data disk from a virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDetachDataDisk(
+ String resourceGroupName,
+ String labName,
+ String name,
+ DetachDataDiskProperties detachDataDiskProperties,
+ Context context);
+
+ /**
+ * Detach the specified disk from the virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param detachDataDiskProperties Request body for detaching data disk from a virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void detachDataDisk(
+ String resourceGroupName, String labName, String name, DetachDataDiskProperties detachDataDiskProperties);
+
+ /**
+ * Detach the specified disk from the virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param detachDataDiskProperties Request body for detaching data disk from a virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void detachDataDisk(
+ String resourceGroupName,
+ String labName,
+ String name,
+ DetachDataDiskProperties detachDataDiskProperties,
+ Context context);
+
+ /**
+ * Gets a string that represents the contents of the RDP file for the virtual machine.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a string that represents the contents of the RDP file for the virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ RdpConnectionInner getRdpFileContents(String resourceGroupName, String labName, String name);
+
+ /**
+ * Gets a string that represents the contents of the RDP file for the virtual machine.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a string that represents the contents of the RDP file for the virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getRdpFileContentsWithResponse(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Lists the applicable start/stop schedules, if any.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedules applicable to a virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ApplicableScheduleInner listApplicableSchedules(String resourceGroupName, String labName, String name);
+
+ /**
+ * Lists the applicable start/stop schedules, if any.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return schedules applicable to a virtual machine.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listApplicableSchedulesWithResponse(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Redeploy a virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginRedeploy(String resourceGroupName, String labName, String name);
+
+ /**
+ * Redeploy a virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginRedeploy(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Redeploy a virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void redeploy(String resourceGroupName, String labName, String name);
+
+ /**
+ * Redeploy a virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void redeploy(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Resize Virtual Machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param resizeLabVirtualMachineProperties Request body for resizing a virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginResize(
+ String resourceGroupName,
+ String labName,
+ String name,
+ ResizeLabVirtualMachineProperties resizeLabVirtualMachineProperties);
+
+ /**
+ * Resize Virtual Machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param resizeLabVirtualMachineProperties Request body for resizing a virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginResize(
+ String resourceGroupName,
+ String labName,
+ String name,
+ ResizeLabVirtualMachineProperties resizeLabVirtualMachineProperties,
+ Context context);
+
+ /**
+ * Resize Virtual Machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param resizeLabVirtualMachineProperties Request body for resizing a virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void resize(
+ String resourceGroupName,
+ String labName,
+ String name,
+ ResizeLabVirtualMachineProperties resizeLabVirtualMachineProperties);
+
+ /**
+ * Resize Virtual Machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param resizeLabVirtualMachineProperties Request body for resizing a virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void resize(
+ String resourceGroupName,
+ String labName,
+ String name,
+ ResizeLabVirtualMachineProperties resizeLabVirtualMachineProperties,
+ Context context);
+
+ /**
+ * Restart a virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginRestart(String resourceGroupName, String labName, String name);
+
+ /**
+ * Restart a virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginRestart(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Restart a virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void restart(String resourceGroupName, String labName, String name);
+
+ /**
+ * Restart a virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void restart(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Start a virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginStart(String resourceGroupName, String labName, String name);
+
+ /**
+ * Start a virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginStart(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Start a virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void start(String resourceGroupName, String labName, String name);
+
+ /**
+ * Start a virtual machine. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void start(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Stop a virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginStop(String resourceGroupName, String labName, String name);
+
+ /**
+ * Stop a virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginStop(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Stop a virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void stop(String resourceGroupName, String labName, String name);
+
+ /**
+ * Stop a virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void stop(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Transfers all data disks attached to the virtual machine to be owned by the current user. This operation can take
+ * a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginTransferDisks(String resourceGroupName, String labName, String name);
+
+ /**
+ * Transfers all data disks attached to the virtual machine to be owned by the current user. This operation can take
+ * a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginTransferDisks(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Transfers all data disks attached to the virtual machine to be owned by the current user. This operation can take
+ * a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void transferDisks(String resourceGroupName, String labName, String name);
+
+ /**
+ * Transfers all data disks attached to the virtual machine to be owned by the current user. This operation can take
+ * a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void transferDisks(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Release ownership of an existing virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginUnClaim(String resourceGroupName, String labName, String name);
+
+ /**
+ * Release ownership of an existing virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginUnClaim(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Release ownership of an existing virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void unClaim(String resourceGroupName, String labName, String name);
+
+ /**
+ * Release ownership of an existing virtual machine This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual machine.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void unClaim(String resourceGroupName, String labName, String name, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/VirtualNetworksClient.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/VirtualNetworksClient.java
new file mode 100644
index 000000000000..aa4dc054554c
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/VirtualNetworksClient.java
@@ -0,0 +1,243 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.devtestlabs.fluent.models.VirtualNetworkInner;
+import com.azure.resourcemanager.devtestlabs.models.VirtualNetworkFragment;
+
+/** An instance of this class provides access to all the operations defined in VirtualNetworksClient. */
+public interface VirtualNetworksClient {
+ /**
+ * List virtual networks in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String labName);
+
+ /**
+ * List virtual networks in a given lab.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param expand Specify the $expand query. Example: 'properties($expand=externalSubnets)'.
+ * @param filter The filter to apply to the operation. Example: '$filter=contains(name,'myName').
+ * @param top The maximum number of resources to return from the operation. Example: '$top=10'.
+ * @param orderby The ordering expression for the results, using OData notation. Example: '$orderby=name desc'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the response of a list operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String labName,
+ String expand,
+ String filter,
+ Integer top,
+ String orderby,
+ Context context);
+
+ /**
+ * Get virtual network.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return virtual network.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ VirtualNetworkInner get(String resourceGroupName, String labName, String name);
+
+ /**
+ * Get virtual network.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @param expand Specify the $expand query. Example: 'properties($expand=externalSubnets)'.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return virtual network.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String labName, String name, String expand, Context context);
+
+ /**
+ * Create or replace an existing virtual network. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @param virtualNetwork A virtual network.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual network.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, VirtualNetworkInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String name, VirtualNetworkInner virtualNetwork);
+
+ /**
+ * Create or replace an existing virtual network. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @param virtualNetwork A virtual network.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual network.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, VirtualNetworkInner> beginCreateOrUpdate(
+ String resourceGroupName, String labName, String name, VirtualNetworkInner virtualNetwork, Context context);
+
+ /**
+ * Create or replace an existing virtual network. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @param virtualNetwork A virtual network.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual network.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ VirtualNetworkInner createOrUpdate(
+ String resourceGroupName, String labName, String name, VirtualNetworkInner virtualNetwork);
+
+ /**
+ * Create or replace an existing virtual network. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @param virtualNetwork A virtual network.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual network.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ VirtualNetworkInner createOrUpdate(
+ String resourceGroupName, String labName, String name, VirtualNetworkInner virtualNetwork, Context context);
+
+ /**
+ * Delete virtual network. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete virtual network. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return the completion.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, Void> beginDelete(
+ String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Delete virtual network. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name);
+
+ /**
+ * Delete virtual network. This operation can take a while to complete.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ void delete(String resourceGroupName, String labName, String name, Context context);
+
+ /**
+ * Allows modifying tags of virtual networks. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @param virtualNetwork A virtual network.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual network.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ VirtualNetworkInner update(
+ String resourceGroupName, String labName, String name, VirtualNetworkFragment virtualNetwork);
+
+ /**
+ * Allows modifying tags of virtual networks. All other properties will be ignored.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param labName The name of the lab.
+ * @param name The name of the virtual network.
+ * @param virtualNetwork A virtual network.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return a virtual network.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String labName, String name, VirtualNetworkFragment virtualNetwork, Context context);
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ApplicableScheduleInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ApplicableScheduleInner.java
new file mode 100644
index 000000000000..1fb9d099da1c
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ApplicableScheduleInner.java
@@ -0,0 +1,104 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** Schedules applicable to a virtual machine. The schedules may have been defined on a VM or on lab level. */
+@JsonFlatten
+@Fluent
+public class ApplicableScheduleInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ApplicableScheduleInner.class);
+
+ /*
+ * The auto-shutdown schedule, if one has been set at the lab or lab
+ * resource level.
+ */
+ @JsonProperty(value = "properties.labVmsShutdown")
+ private ScheduleInner labVmsShutdown;
+
+ /*
+ * The auto-startup schedule, if one has been set at the lab or lab
+ * resource level.
+ */
+ @JsonProperty(value = "properties.labVmsStartup")
+ private ScheduleInner labVmsStartup;
+
+ /**
+ * Get the labVmsShutdown property: The auto-shutdown schedule, if one has been set at the lab or lab resource
+ * level.
+ *
+ * @return the labVmsShutdown value.
+ */
+ public ScheduleInner labVmsShutdown() {
+ return this.labVmsShutdown;
+ }
+
+ /**
+ * Set the labVmsShutdown property: The auto-shutdown schedule, if one has been set at the lab or lab resource
+ * level.
+ *
+ * @param labVmsShutdown the labVmsShutdown value to set.
+ * @return the ApplicableScheduleInner object itself.
+ */
+ public ApplicableScheduleInner withLabVmsShutdown(ScheduleInner labVmsShutdown) {
+ this.labVmsShutdown = labVmsShutdown;
+ return this;
+ }
+
+ /**
+ * Get the labVmsStartup property: The auto-startup schedule, if one has been set at the lab or lab resource level.
+ *
+ * @return the labVmsStartup value.
+ */
+ public ScheduleInner labVmsStartup() {
+ return this.labVmsStartup;
+ }
+
+ /**
+ * Set the labVmsStartup property: The auto-startup schedule, if one has been set at the lab or lab resource level.
+ *
+ * @param labVmsStartup the labVmsStartup value to set.
+ * @return the ApplicableScheduleInner object itself.
+ */
+ public ApplicableScheduleInner withLabVmsStartup(ScheduleInner labVmsStartup) {
+ this.labVmsStartup = labVmsStartup;
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ApplicableScheduleInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ApplicableScheduleInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (labVmsShutdown() != null) {
+ labVmsShutdown().validate();
+ }
+ if (labVmsStartup() != null) {
+ labVmsStartup().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArmTemplateInfoInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArmTemplateInfoInner.java
new file mode 100644
index 000000000000..d751614cb14c
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArmTemplateInfoInner.java
@@ -0,0 +1,76 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Information about a generated ARM template. */
+@Fluent
+public final class ArmTemplateInfoInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ArmTemplateInfoInner.class);
+
+ /*
+ * The template's contents.
+ */
+ @JsonProperty(value = "template")
+ private Object template;
+
+ /*
+ * The parameters of the ARM template.
+ */
+ @JsonProperty(value = "parameters")
+ private Object parameters;
+
+ /**
+ * Get the template property: The template's contents.
+ *
+ * @return the template value.
+ */
+ public Object template() {
+ return this.template;
+ }
+
+ /**
+ * Set the template property: The template's contents.
+ *
+ * @param template the template value to set.
+ * @return the ArmTemplateInfoInner object itself.
+ */
+ public ArmTemplateInfoInner withTemplate(Object template) {
+ this.template = template;
+ return this;
+ }
+
+ /**
+ * Get the parameters property: The parameters of the ARM template.
+ *
+ * @return the parameters value.
+ */
+ public Object parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Set the parameters property: The parameters of the ARM template.
+ *
+ * @param parameters the parameters value to set.
+ * @return the ArmTemplateInfoInner object itself.
+ */
+ public ArmTemplateInfoInner withParameters(Object parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArmTemplateInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArmTemplateInner.java
new file mode 100644
index 000000000000..fa6c94a5a485
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArmTemplateInner.java
@@ -0,0 +1,170 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.ParametersValueFileInfo;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** An Azure Resource Manager template. */
+@JsonFlatten
+@Immutable
+public class ArmTemplateInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ArmTemplateInner.class);
+
+ /*
+ * The display name of the ARM template.
+ */
+ @JsonProperty(value = "properties.displayName", access = JsonProperty.Access.WRITE_ONLY)
+ private String displayName;
+
+ /*
+ * The description of the ARM template.
+ */
+ @JsonProperty(value = "properties.description", access = JsonProperty.Access.WRITE_ONLY)
+ private String description;
+
+ /*
+ * The publisher of the ARM template.
+ */
+ @JsonProperty(value = "properties.publisher", access = JsonProperty.Access.WRITE_ONLY)
+ private String publisher;
+
+ /*
+ * The URI to the icon of the ARM template.
+ */
+ @JsonProperty(value = "properties.icon", access = JsonProperty.Access.WRITE_ONLY)
+ private String icon;
+
+ /*
+ * The contents of the ARM template.
+ */
+ @JsonProperty(value = "properties.contents", access = JsonProperty.Access.WRITE_ONLY)
+ private Object contents;
+
+ /*
+ * The creation date of the armTemplate.
+ */
+ @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime createdDate;
+
+ /*
+ * File name and parameter values information from all
+ * azuredeploy.*.parameters.json for the ARM template.
+ */
+ @JsonProperty(value = "properties.parametersValueFilesInfo", access = JsonProperty.Access.WRITE_ONLY)
+ private List parametersValueFilesInfo;
+
+ /*
+ * Whether or not ARM template is enabled for use by lab user.
+ */
+ @JsonProperty(value = "properties.enabled", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean enabled;
+
+ /**
+ * Get the displayName property: The display name of the ARM template.
+ *
+ * @return the displayName value.
+ */
+ public String displayName() {
+ return this.displayName;
+ }
+
+ /**
+ * Get the description property: The description of the ARM template.
+ *
+ * @return the description value.
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Get the publisher property: The publisher of the ARM template.
+ *
+ * @return the publisher value.
+ */
+ public String publisher() {
+ return this.publisher;
+ }
+
+ /**
+ * Get the icon property: The URI to the icon of the ARM template.
+ *
+ * @return the icon value.
+ */
+ public String icon() {
+ return this.icon;
+ }
+
+ /**
+ * Get the contents property: The contents of the ARM template.
+ *
+ * @return the contents value.
+ */
+ public Object contents() {
+ return this.contents;
+ }
+
+ /**
+ * Get the createdDate property: The creation date of the armTemplate.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Get the parametersValueFilesInfo property: File name and parameter values information from all
+ * azuredeploy.*.parameters.json for the ARM template.
+ *
+ * @return the parametersValueFilesInfo value.
+ */
+ public List parametersValueFilesInfo() {
+ return this.parametersValueFilesInfo;
+ }
+
+ /**
+ * Get the enabled property: Whether or not ARM template is enabled for use by lab user.
+ *
+ * @return the enabled value.
+ */
+ public Boolean enabled() {
+ return this.enabled;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ArmTemplateInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ArmTemplateInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (parametersValueFilesInfo() != null) {
+ parametersValueFilesInfo().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArtifactInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArtifactInner.java
new file mode 100644
index 000000000000..337b3537e162
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArtifactInner.java
@@ -0,0 +1,163 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** An artifact. */
+@JsonFlatten
+@Immutable
+public class ArtifactInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ArtifactInner.class);
+
+ /*
+ * The artifact's title.
+ */
+ @JsonProperty(value = "properties.title", access = JsonProperty.Access.WRITE_ONLY)
+ private String title;
+
+ /*
+ * The artifact's description.
+ */
+ @JsonProperty(value = "properties.description", access = JsonProperty.Access.WRITE_ONLY)
+ private String description;
+
+ /*
+ * The artifact's publisher.
+ */
+ @JsonProperty(value = "properties.publisher", access = JsonProperty.Access.WRITE_ONLY)
+ private String publisher;
+
+ /*
+ * The file path to the artifact.
+ */
+ @JsonProperty(value = "properties.filePath", access = JsonProperty.Access.WRITE_ONLY)
+ private String filePath;
+
+ /*
+ * The URI to the artifact icon.
+ */
+ @JsonProperty(value = "properties.icon", access = JsonProperty.Access.WRITE_ONLY)
+ private String icon;
+
+ /*
+ * The artifact's target OS.
+ */
+ @JsonProperty(value = "properties.targetOsType", access = JsonProperty.Access.WRITE_ONLY)
+ private String targetOsType;
+
+ /*
+ * The artifact's parameters.
+ */
+ @JsonProperty(value = "properties.parameters", access = JsonProperty.Access.WRITE_ONLY)
+ private Object parameters;
+
+ /*
+ * The artifact's creation date.
+ */
+ @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime createdDate;
+
+ /**
+ * Get the title property: The artifact's title.
+ *
+ * @return the title value.
+ */
+ public String title() {
+ return this.title;
+ }
+
+ /**
+ * Get the description property: The artifact's description.
+ *
+ * @return the description value.
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Get the publisher property: The artifact's publisher.
+ *
+ * @return the publisher value.
+ */
+ public String publisher() {
+ return this.publisher;
+ }
+
+ /**
+ * Get the filePath property: The file path to the artifact.
+ *
+ * @return the filePath value.
+ */
+ public String filePath() {
+ return this.filePath;
+ }
+
+ /**
+ * Get the icon property: The URI to the artifact icon.
+ *
+ * @return the icon value.
+ */
+ public String icon() {
+ return this.icon;
+ }
+
+ /**
+ * Get the targetOsType property: The artifact's target OS.
+ *
+ * @return the targetOsType value.
+ */
+ public String targetOsType() {
+ return this.targetOsType;
+ }
+
+ /**
+ * Get the parameters property: The artifact's parameters.
+ *
+ * @return the parameters value.
+ */
+ public Object parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Get the createdDate property: The artifact's creation date.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ArtifactInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ArtifactInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArtifactSourceInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArtifactSourceInner.java
new file mode 100644
index 000000000000..eea399ba1661
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ArtifactSourceInner.java
@@ -0,0 +1,298 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.EnableStatus;
+import com.azure.resourcemanager.devtestlabs.models.SourceControlType;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** Properties of an artifact source. */
+@JsonFlatten
+@Fluent
+public class ArtifactSourceInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ArtifactSourceInner.class);
+
+ /*
+ * The artifact source's display name.
+ */
+ @JsonProperty(value = "properties.displayName")
+ private String displayName;
+
+ /*
+ * The artifact source's URI.
+ */
+ @JsonProperty(value = "properties.uri")
+ private String uri;
+
+ /*
+ * The artifact source's type.
+ */
+ @JsonProperty(value = "properties.sourceType")
+ private SourceControlType sourceType;
+
+ /*
+ * The folder containing artifacts.
+ */
+ @JsonProperty(value = "properties.folderPath")
+ private String folderPath;
+
+ /*
+ * The folder containing Azure Resource Manager templates.
+ */
+ @JsonProperty(value = "properties.armTemplateFolderPath")
+ private String armTemplateFolderPath;
+
+ /*
+ * The artifact source's branch reference.
+ */
+ @JsonProperty(value = "properties.branchRef")
+ private String branchRef;
+
+ /*
+ * The security token to authenticate to the artifact source.
+ */
+ @JsonProperty(value = "properties.securityToken")
+ private String securityToken;
+
+ /*
+ * Indicates if the artifact source is enabled (values: Enabled, Disabled).
+ */
+ @JsonProperty(value = "properties.status")
+ private EnableStatus status;
+
+ /*
+ * The artifact source's creation date.
+ */
+ @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime createdDate;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the displayName property: The artifact source's display name.
+ *
+ * @return the displayName value.
+ */
+ public String displayName() {
+ return this.displayName;
+ }
+
+ /**
+ * Set the displayName property: The artifact source's display name.
+ *
+ * @param displayName the displayName value to set.
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ /**
+ * Get the uri property: The artifact source's URI.
+ *
+ * @return the uri value.
+ */
+ public String uri() {
+ return this.uri;
+ }
+
+ /**
+ * Set the uri property: The artifact source's URI.
+ *
+ * @param uri the uri value to set.
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withUri(String uri) {
+ this.uri = uri;
+ return this;
+ }
+
+ /**
+ * Get the sourceType property: The artifact source's type.
+ *
+ * @return the sourceType value.
+ */
+ public SourceControlType sourceType() {
+ return this.sourceType;
+ }
+
+ /**
+ * Set the sourceType property: The artifact source's type.
+ *
+ * @param sourceType the sourceType value to set.
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withSourceType(SourceControlType sourceType) {
+ this.sourceType = sourceType;
+ return this;
+ }
+
+ /**
+ * Get the folderPath property: The folder containing artifacts.
+ *
+ * @return the folderPath value.
+ */
+ public String folderPath() {
+ return this.folderPath;
+ }
+
+ /**
+ * Set the folderPath property: The folder containing artifacts.
+ *
+ * @param folderPath the folderPath value to set.
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withFolderPath(String folderPath) {
+ this.folderPath = folderPath;
+ return this;
+ }
+
+ /**
+ * Get the armTemplateFolderPath property: The folder containing Azure Resource Manager templates.
+ *
+ * @return the armTemplateFolderPath value.
+ */
+ public String armTemplateFolderPath() {
+ return this.armTemplateFolderPath;
+ }
+
+ /**
+ * Set the armTemplateFolderPath property: The folder containing Azure Resource Manager templates.
+ *
+ * @param armTemplateFolderPath the armTemplateFolderPath value to set.
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withArmTemplateFolderPath(String armTemplateFolderPath) {
+ this.armTemplateFolderPath = armTemplateFolderPath;
+ return this;
+ }
+
+ /**
+ * Get the branchRef property: The artifact source's branch reference.
+ *
+ * @return the branchRef value.
+ */
+ public String branchRef() {
+ return this.branchRef;
+ }
+
+ /**
+ * Set the branchRef property: The artifact source's branch reference.
+ *
+ * @param branchRef the branchRef value to set.
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withBranchRef(String branchRef) {
+ this.branchRef = branchRef;
+ return this;
+ }
+
+ /**
+ * Get the securityToken property: The security token to authenticate to the artifact source.
+ *
+ * @return the securityToken value.
+ */
+ public String securityToken() {
+ return this.securityToken;
+ }
+
+ /**
+ * Set the securityToken property: The security token to authenticate to the artifact source.
+ *
+ * @param securityToken the securityToken value to set.
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withSecurityToken(String securityToken) {
+ this.securityToken = securityToken;
+ return this;
+ }
+
+ /**
+ * Get the status property: Indicates if the artifact source is enabled (values: Enabled, Disabled).
+ *
+ * @return the status value.
+ */
+ public EnableStatus status() {
+ return this.status;
+ }
+
+ /**
+ * Set the status property: Indicates if the artifact source is enabled (values: Enabled, Disabled).
+ *
+ * @param status the status value to set.
+ * @return the ArtifactSourceInner object itself.
+ */
+ public ArtifactSourceInner withStatus(EnableStatus status) {
+ this.status = status;
+ return this;
+ }
+
+ /**
+ * Get the createdDate property: The artifact source's creation date.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ArtifactSourceInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ArtifactSourceInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/CustomImageInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/CustomImageInner.java
new file mode 100644
index 000000000000..4c183a014e1d
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/CustomImageInner.java
@@ -0,0 +1,342 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.CustomImagePropertiesCustom;
+import com.azure.resourcemanager.devtestlabs.models.CustomImagePropertiesFromPlan;
+import com.azure.resourcemanager.devtestlabs.models.CustomImagePropertiesFromVm;
+import com.azure.resourcemanager.devtestlabs.models.DataDiskStorageTypeInfo;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** A custom image. */
+@JsonFlatten
+@Fluent
+public class CustomImageInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(CustomImageInner.class);
+
+ /*
+ * The virtual machine from which the image is to be created.
+ */
+ @JsonProperty(value = "properties.vm")
+ private CustomImagePropertiesFromVm vm;
+
+ /*
+ * The VHD from which the image is to be created.
+ */
+ @JsonProperty(value = "properties.vhd")
+ private CustomImagePropertiesCustom vhd;
+
+ /*
+ * The description of the custom image.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /*
+ * The author of the custom image.
+ */
+ @JsonProperty(value = "properties.author")
+ private String author;
+
+ /*
+ * The creation date of the custom image.
+ */
+ @JsonProperty(value = "properties.creationDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime creationDate;
+
+ /*
+ * The Managed Image Id backing the custom image.
+ */
+ @JsonProperty(value = "properties.managedImageId")
+ private String managedImageId;
+
+ /*
+ * The Managed Snapshot Id backing the custom image.
+ */
+ @JsonProperty(value = "properties.managedSnapshotId")
+ private String managedSnapshotId;
+
+ /*
+ * Storage information about the data disks present in the custom image
+ */
+ @JsonProperty(value = "properties.dataDiskStorageInfo")
+ private List dataDiskStorageInfo;
+
+ /*
+ * Storage information about the plan related to this custom image
+ */
+ @JsonProperty(value = "properties.customImagePlan")
+ private CustomImagePropertiesFromPlan customImagePlan;
+
+ /*
+ * Whether or not the custom images underlying offer/plan has been enabled
+ * for programmatic deployment
+ */
+ @JsonProperty(value = "properties.isPlanAuthorized")
+ private Boolean isPlanAuthorized;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the vm property: The virtual machine from which the image is to be created.
+ *
+ * @return the vm value.
+ */
+ public CustomImagePropertiesFromVm vm() {
+ return this.vm;
+ }
+
+ /**
+ * Set the vm property: The virtual machine from which the image is to be created.
+ *
+ * @param vm the vm value to set.
+ * @return the CustomImageInner object itself.
+ */
+ public CustomImageInner withVm(CustomImagePropertiesFromVm vm) {
+ this.vm = vm;
+ return this;
+ }
+
+ /**
+ * Get the vhd property: The VHD from which the image is to be created.
+ *
+ * @return the vhd value.
+ */
+ public CustomImagePropertiesCustom vhd() {
+ return this.vhd;
+ }
+
+ /**
+ * Set the vhd property: The VHD from which the image is to be created.
+ *
+ * @param vhd the vhd value to set.
+ * @return the CustomImageInner object itself.
+ */
+ public CustomImageInner withVhd(CustomImagePropertiesCustom vhd) {
+ this.vhd = vhd;
+ return this;
+ }
+
+ /**
+ * Get the description property: The description of the custom image.
+ *
+ * @return the description value.
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set the description property: The description of the custom image.
+ *
+ * @param description the description value to set.
+ * @return the CustomImageInner object itself.
+ */
+ public CustomImageInner withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get the author property: The author of the custom image.
+ *
+ * @return the author value.
+ */
+ public String author() {
+ return this.author;
+ }
+
+ /**
+ * Set the author property: The author of the custom image.
+ *
+ * @param author the author value to set.
+ * @return the CustomImageInner object itself.
+ */
+ public CustomImageInner withAuthor(String author) {
+ this.author = author;
+ return this;
+ }
+
+ /**
+ * Get the creationDate property: The creation date of the custom image.
+ *
+ * @return the creationDate value.
+ */
+ public OffsetDateTime creationDate() {
+ return this.creationDate;
+ }
+
+ /**
+ * Get the managedImageId property: The Managed Image Id backing the custom image.
+ *
+ * @return the managedImageId value.
+ */
+ public String managedImageId() {
+ return this.managedImageId;
+ }
+
+ /**
+ * Set the managedImageId property: The Managed Image Id backing the custom image.
+ *
+ * @param managedImageId the managedImageId value to set.
+ * @return the CustomImageInner object itself.
+ */
+ public CustomImageInner withManagedImageId(String managedImageId) {
+ this.managedImageId = managedImageId;
+ return this;
+ }
+
+ /**
+ * Get the managedSnapshotId property: The Managed Snapshot Id backing the custom image.
+ *
+ * @return the managedSnapshotId value.
+ */
+ public String managedSnapshotId() {
+ return this.managedSnapshotId;
+ }
+
+ /**
+ * Set the managedSnapshotId property: The Managed Snapshot Id backing the custom image.
+ *
+ * @param managedSnapshotId the managedSnapshotId value to set.
+ * @return the CustomImageInner object itself.
+ */
+ public CustomImageInner withManagedSnapshotId(String managedSnapshotId) {
+ this.managedSnapshotId = managedSnapshotId;
+ return this;
+ }
+
+ /**
+ * Get the dataDiskStorageInfo property: Storage information about the data disks present in the custom image.
+ *
+ * @return the dataDiskStorageInfo value.
+ */
+ public List dataDiskStorageInfo() {
+ return this.dataDiskStorageInfo;
+ }
+
+ /**
+ * Set the dataDiskStorageInfo property: Storage information about the data disks present in the custom image.
+ *
+ * @param dataDiskStorageInfo the dataDiskStorageInfo value to set.
+ * @return the CustomImageInner object itself.
+ */
+ public CustomImageInner withDataDiskStorageInfo(List dataDiskStorageInfo) {
+ this.dataDiskStorageInfo = dataDiskStorageInfo;
+ return this;
+ }
+
+ /**
+ * Get the customImagePlan property: Storage information about the plan related to this custom image.
+ *
+ * @return the customImagePlan value.
+ */
+ public CustomImagePropertiesFromPlan customImagePlan() {
+ return this.customImagePlan;
+ }
+
+ /**
+ * Set the customImagePlan property: Storage information about the plan related to this custom image.
+ *
+ * @param customImagePlan the customImagePlan value to set.
+ * @return the CustomImageInner object itself.
+ */
+ public CustomImageInner withCustomImagePlan(CustomImagePropertiesFromPlan customImagePlan) {
+ this.customImagePlan = customImagePlan;
+ return this;
+ }
+
+ /**
+ * Get the isPlanAuthorized property: Whether or not the custom images underlying offer/plan has been enabled for
+ * programmatic deployment.
+ *
+ * @return the isPlanAuthorized value.
+ */
+ public Boolean isPlanAuthorized() {
+ return this.isPlanAuthorized;
+ }
+
+ /**
+ * Set the isPlanAuthorized property: Whether or not the custom images underlying offer/plan has been enabled for
+ * programmatic deployment.
+ *
+ * @param isPlanAuthorized the isPlanAuthorized value to set.
+ * @return the CustomImageInner object itself.
+ */
+ public CustomImageInner withIsPlanAuthorized(Boolean isPlanAuthorized) {
+ this.isPlanAuthorized = isPlanAuthorized;
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public CustomImageInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public CustomImageInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (vm() != null) {
+ vm().validate();
+ }
+ if (vhd() != null) {
+ vhd().validate();
+ }
+ if (dataDiskStorageInfo() != null) {
+ dataDiskStorageInfo().forEach(e -> e.validate());
+ }
+ if (customImagePlan() != null) {
+ customImagePlan().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/DiskInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/DiskInner.java
new file mode 100644
index 000000000000..e0846e50558f
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/DiskInner.java
@@ -0,0 +1,298 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.StorageType;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** A Disk. */
+@JsonFlatten
+@Fluent
+public class DiskInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(DiskInner.class);
+
+ /*
+ * The storage type for the disk (i.e. Standard, Premium).
+ */
+ @JsonProperty(value = "properties.diskType")
+ private StorageType diskType;
+
+ /*
+ * The size of the disk in Gibibytes.
+ */
+ @JsonProperty(value = "properties.diskSizeGiB")
+ private Integer diskSizeGiB;
+
+ /*
+ * The resource ID of the VM to which this disk is leased.
+ */
+ @JsonProperty(value = "properties.leasedByLabVmId")
+ private String leasedByLabVmId;
+
+ /*
+ * When backed by a blob, the name of the VHD blob without extension.
+ */
+ @JsonProperty(value = "properties.diskBlobName")
+ private String diskBlobName;
+
+ /*
+ * When backed by a blob, the URI of underlying blob.
+ */
+ @JsonProperty(value = "properties.diskUri")
+ private String diskUri;
+
+ /*
+ * When backed by a blob, the storage account where the blob is.
+ */
+ @JsonProperty(value = "properties.storageAccountId")
+ private String storageAccountId;
+
+ /*
+ * The creation date of the disk.
+ */
+ @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime createdDate;
+
+ /*
+ * The host caching policy of the disk (i.e. None, ReadOnly, ReadWrite).
+ */
+ @JsonProperty(value = "properties.hostCaching")
+ private String hostCaching;
+
+ /*
+ * When backed by managed disk, this is the ID of the compute disk
+ * resource.
+ */
+ @JsonProperty(value = "properties.managedDiskId")
+ private String managedDiskId;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the diskType property: The storage type for the disk (i.e. Standard, Premium).
+ *
+ * @return the diskType value.
+ */
+ public StorageType diskType() {
+ return this.diskType;
+ }
+
+ /**
+ * Set the diskType property: The storage type for the disk (i.e. Standard, Premium).
+ *
+ * @param diskType the diskType value to set.
+ * @return the DiskInner object itself.
+ */
+ public DiskInner withDiskType(StorageType diskType) {
+ this.diskType = diskType;
+ return this;
+ }
+
+ /**
+ * Get the diskSizeGiB property: The size of the disk in Gibibytes.
+ *
+ * @return the diskSizeGiB value.
+ */
+ public Integer diskSizeGiB() {
+ return this.diskSizeGiB;
+ }
+
+ /**
+ * Set the diskSizeGiB property: The size of the disk in Gibibytes.
+ *
+ * @param diskSizeGiB the diskSizeGiB value to set.
+ * @return the DiskInner object itself.
+ */
+ public DiskInner withDiskSizeGiB(Integer diskSizeGiB) {
+ this.diskSizeGiB = diskSizeGiB;
+ return this;
+ }
+
+ /**
+ * Get the leasedByLabVmId property: The resource ID of the VM to which this disk is leased.
+ *
+ * @return the leasedByLabVmId value.
+ */
+ public String leasedByLabVmId() {
+ return this.leasedByLabVmId;
+ }
+
+ /**
+ * Set the leasedByLabVmId property: The resource ID of the VM to which this disk is leased.
+ *
+ * @param leasedByLabVmId the leasedByLabVmId value to set.
+ * @return the DiskInner object itself.
+ */
+ public DiskInner withLeasedByLabVmId(String leasedByLabVmId) {
+ this.leasedByLabVmId = leasedByLabVmId;
+ return this;
+ }
+
+ /**
+ * Get the diskBlobName property: When backed by a blob, the name of the VHD blob without extension.
+ *
+ * @return the diskBlobName value.
+ */
+ public String diskBlobName() {
+ return this.diskBlobName;
+ }
+
+ /**
+ * Set the diskBlobName property: When backed by a blob, the name of the VHD blob without extension.
+ *
+ * @param diskBlobName the diskBlobName value to set.
+ * @return the DiskInner object itself.
+ */
+ public DiskInner withDiskBlobName(String diskBlobName) {
+ this.diskBlobName = diskBlobName;
+ return this;
+ }
+
+ /**
+ * Get the diskUri property: When backed by a blob, the URI of underlying blob.
+ *
+ * @return the diskUri value.
+ */
+ public String diskUri() {
+ return this.diskUri;
+ }
+
+ /**
+ * Set the diskUri property: When backed by a blob, the URI of underlying blob.
+ *
+ * @param diskUri the diskUri value to set.
+ * @return the DiskInner object itself.
+ */
+ public DiskInner withDiskUri(String diskUri) {
+ this.diskUri = diskUri;
+ return this;
+ }
+
+ /**
+ * Get the storageAccountId property: When backed by a blob, the storage account where the blob is.
+ *
+ * @return the storageAccountId value.
+ */
+ public String storageAccountId() {
+ return this.storageAccountId;
+ }
+
+ /**
+ * Set the storageAccountId property: When backed by a blob, the storage account where the blob is.
+ *
+ * @param storageAccountId the storageAccountId value to set.
+ * @return the DiskInner object itself.
+ */
+ public DiskInner withStorageAccountId(String storageAccountId) {
+ this.storageAccountId = storageAccountId;
+ return this;
+ }
+
+ /**
+ * Get the createdDate property: The creation date of the disk.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Get the hostCaching property: The host caching policy of the disk (i.e. None, ReadOnly, ReadWrite).
+ *
+ * @return the hostCaching value.
+ */
+ public String hostCaching() {
+ return this.hostCaching;
+ }
+
+ /**
+ * Set the hostCaching property: The host caching policy of the disk (i.e. None, ReadOnly, ReadWrite).
+ *
+ * @param hostCaching the hostCaching value to set.
+ * @return the DiskInner object itself.
+ */
+ public DiskInner withHostCaching(String hostCaching) {
+ this.hostCaching = hostCaching;
+ return this;
+ }
+
+ /**
+ * Get the managedDiskId property: When backed by managed disk, this is the ID of the compute disk resource.
+ *
+ * @return the managedDiskId value.
+ */
+ public String managedDiskId() {
+ return this.managedDiskId;
+ }
+
+ /**
+ * Set the managedDiskId property: When backed by managed disk, this is the ID of the compute disk resource.
+ *
+ * @param managedDiskId the managedDiskId value to set.
+ * @return the DiskInner object itself.
+ */
+ public DiskInner withManagedDiskId(String managedDiskId) {
+ this.managedDiskId = managedDiskId;
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public DiskInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public DiskInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/DtlEnvironmentInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/DtlEnvironmentInner.java
new file mode 100644
index 000000000000..024dc79df197
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/DtlEnvironmentInner.java
@@ -0,0 +1,162 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.EnvironmentDeploymentProperties;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** An environment, which is essentially an ARM template deployment. */
+@JsonFlatten
+@Fluent
+public class DtlEnvironmentInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(DtlEnvironmentInner.class);
+
+ /*
+ * The deployment properties of the environment.
+ */
+ @JsonProperty(value = "properties.deploymentProperties")
+ private EnvironmentDeploymentProperties deploymentProperties;
+
+ /*
+ * The display name of the Azure Resource Manager template that produced
+ * the environment.
+ */
+ @JsonProperty(value = "properties.armTemplateDisplayName")
+ private String armTemplateDisplayName;
+
+ /*
+ * The identifier of the resource group containing the environment's
+ * resources.
+ */
+ @JsonProperty(value = "properties.resourceGroupId", access = JsonProperty.Access.WRITE_ONLY)
+ private String resourceGroupId;
+
+ /*
+ * The creator of the environment.
+ */
+ @JsonProperty(value = "properties.createdByUser", access = JsonProperty.Access.WRITE_ONLY)
+ private String createdByUser;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the deploymentProperties property: The deployment properties of the environment.
+ *
+ * @return the deploymentProperties value.
+ */
+ public EnvironmentDeploymentProperties deploymentProperties() {
+ return this.deploymentProperties;
+ }
+
+ /**
+ * Set the deploymentProperties property: The deployment properties of the environment.
+ *
+ * @param deploymentProperties the deploymentProperties value to set.
+ * @return the DtlEnvironmentInner object itself.
+ */
+ public DtlEnvironmentInner withDeploymentProperties(EnvironmentDeploymentProperties deploymentProperties) {
+ this.deploymentProperties = deploymentProperties;
+ return this;
+ }
+
+ /**
+ * Get the armTemplateDisplayName property: The display name of the Azure Resource Manager template that produced
+ * the environment.
+ *
+ * @return the armTemplateDisplayName value.
+ */
+ public String armTemplateDisplayName() {
+ return this.armTemplateDisplayName;
+ }
+
+ /**
+ * Set the armTemplateDisplayName property: The display name of the Azure Resource Manager template that produced
+ * the environment.
+ *
+ * @param armTemplateDisplayName the armTemplateDisplayName value to set.
+ * @return the DtlEnvironmentInner object itself.
+ */
+ public DtlEnvironmentInner withArmTemplateDisplayName(String armTemplateDisplayName) {
+ this.armTemplateDisplayName = armTemplateDisplayName;
+ return this;
+ }
+
+ /**
+ * Get the resourceGroupId property: The identifier of the resource group containing the environment's resources.
+ *
+ * @return the resourceGroupId value.
+ */
+ public String resourceGroupId() {
+ return this.resourceGroupId;
+ }
+
+ /**
+ * Get the createdByUser property: The creator of the environment.
+ *
+ * @return the createdByUser value.
+ */
+ public String createdByUser() {
+ return this.createdByUser;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public DtlEnvironmentInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public DtlEnvironmentInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (deploymentProperties() != null) {
+ deploymentProperties().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/EvaluatePoliciesResponseInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/EvaluatePoliciesResponseInner.java
new file mode 100644
index 000000000000..0c048e7821f4
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/EvaluatePoliciesResponseInner.java
@@ -0,0 +1,55 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.PolicySetResult;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Response body for evaluating a policy set. */
+@Fluent
+public final class EvaluatePoliciesResponseInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(EvaluatePoliciesResponseInner.class);
+
+ /*
+ * Results of evaluating a policy set.
+ */
+ @JsonProperty(value = "results")
+ private List results;
+
+ /**
+ * Get the results property: Results of evaluating a policy set.
+ *
+ * @return the results value.
+ */
+ public List results() {
+ return this.results;
+ }
+
+ /**
+ * Set the results property: Results of evaluating a policy set.
+ *
+ * @param results the results value to set.
+ * @return the EvaluatePoliciesResponseInner object itself.
+ */
+ public EvaluatePoliciesResponseInner withResults(List results) {
+ this.results = results;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (results() != null) {
+ results().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/FormulaInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/FormulaInner.java
new file mode 100644
index 000000000000..6d92f275805c
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/FormulaInner.java
@@ -0,0 +1,215 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.FormulaPropertiesFromVm;
+import com.azure.resourcemanager.devtestlabs.models.LabVirtualMachineCreationParameter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** A formula for creating a VM, specifying an image base and other parameters. */
+@JsonFlatten
+@Fluent
+public class FormulaInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(FormulaInner.class);
+
+ /*
+ * The description of the formula.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /*
+ * The author of the formula.
+ */
+ @JsonProperty(value = "properties.author", access = JsonProperty.Access.WRITE_ONLY)
+ private String author;
+
+ /*
+ * The OS type of the formula.
+ */
+ @JsonProperty(value = "properties.osType")
+ private String osType;
+
+ /*
+ * The creation date of the formula.
+ */
+ @JsonProperty(value = "properties.creationDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime creationDate;
+
+ /*
+ * The content of the formula.
+ */
+ @JsonProperty(value = "properties.formulaContent")
+ private LabVirtualMachineCreationParameter formulaContent;
+
+ /*
+ * Information about a VM from which a formula is to be created.
+ */
+ @JsonProperty(value = "properties.vm")
+ private FormulaPropertiesFromVm vm;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the description property: The description of the formula.
+ *
+ * @return the description value.
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set the description property: The description of the formula.
+ *
+ * @param description the description value to set.
+ * @return the FormulaInner object itself.
+ */
+ public FormulaInner withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get the author property: The author of the formula.
+ *
+ * @return the author value.
+ */
+ public String author() {
+ return this.author;
+ }
+
+ /**
+ * Get the osType property: The OS type of the formula.
+ *
+ * @return the osType value.
+ */
+ public String osType() {
+ return this.osType;
+ }
+
+ /**
+ * Set the osType property: The OS type of the formula.
+ *
+ * @param osType the osType value to set.
+ * @return the FormulaInner object itself.
+ */
+ public FormulaInner withOsType(String osType) {
+ this.osType = osType;
+ return this;
+ }
+
+ /**
+ * Get the creationDate property: The creation date of the formula.
+ *
+ * @return the creationDate value.
+ */
+ public OffsetDateTime creationDate() {
+ return this.creationDate;
+ }
+
+ /**
+ * Get the formulaContent property: The content of the formula.
+ *
+ * @return the formulaContent value.
+ */
+ public LabVirtualMachineCreationParameter formulaContent() {
+ return this.formulaContent;
+ }
+
+ /**
+ * Set the formulaContent property: The content of the formula.
+ *
+ * @param formulaContent the formulaContent value to set.
+ * @return the FormulaInner object itself.
+ */
+ public FormulaInner withFormulaContent(LabVirtualMachineCreationParameter formulaContent) {
+ this.formulaContent = formulaContent;
+ return this;
+ }
+
+ /**
+ * Get the vm property: Information about a VM from which a formula is to be created.
+ *
+ * @return the vm value.
+ */
+ public FormulaPropertiesFromVm vm() {
+ return this.vm;
+ }
+
+ /**
+ * Set the vm property: Information about a VM from which a formula is to be created.
+ *
+ * @param vm the vm value to set.
+ * @return the FormulaInner object itself.
+ */
+ public FormulaInner withVm(FormulaPropertiesFromVm vm) {
+ this.vm = vm;
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public FormulaInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public FormulaInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (formulaContent() != null) {
+ formulaContent().validate();
+ }
+ if (vm() != null) {
+ vm().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/GalleryImageInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/GalleryImageInner.java
new file mode 100644
index 000000000000..3c8655bfdb48
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/GalleryImageInner.java
@@ -0,0 +1,244 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.GalleryImageReference;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** A gallery image. */
+@JsonFlatten
+@Fluent
+public class GalleryImageInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(GalleryImageInner.class);
+
+ /*
+ * The author of the gallery image.
+ */
+ @JsonProperty(value = "properties.author")
+ private String author;
+
+ /*
+ * The creation date of the gallery image.
+ */
+ @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime createdDate;
+
+ /*
+ * The description of the gallery image.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /*
+ * The image reference of the gallery image.
+ */
+ @JsonProperty(value = "properties.imageReference")
+ private GalleryImageReference imageReference;
+
+ /*
+ * The icon of the gallery image.
+ */
+ @JsonProperty(value = "properties.icon")
+ private String icon;
+
+ /*
+ * Indicates whether this gallery image is enabled.
+ */
+ @JsonProperty(value = "properties.enabled")
+ private Boolean enabled;
+
+ /*
+ * The third party plan that applies to this image
+ */
+ @JsonProperty(value = "properties.planId")
+ private String planId;
+
+ /*
+ * Indicates if the plan has been authorized for programmatic deployment.
+ */
+ @JsonProperty(value = "properties.isPlanAuthorized")
+ private Boolean isPlanAuthorized;
+
+ /**
+ * Get the author property: The author of the gallery image.
+ *
+ * @return the author value.
+ */
+ public String author() {
+ return this.author;
+ }
+
+ /**
+ * Set the author property: The author of the gallery image.
+ *
+ * @param author the author value to set.
+ * @return the GalleryImageInner object itself.
+ */
+ public GalleryImageInner withAuthor(String author) {
+ this.author = author;
+ return this;
+ }
+
+ /**
+ * Get the createdDate property: The creation date of the gallery image.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Get the description property: The description of the gallery image.
+ *
+ * @return the description value.
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set the description property: The description of the gallery image.
+ *
+ * @param description the description value to set.
+ * @return the GalleryImageInner object itself.
+ */
+ public GalleryImageInner withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get the imageReference property: The image reference of the gallery image.
+ *
+ * @return the imageReference value.
+ */
+ public GalleryImageReference imageReference() {
+ return this.imageReference;
+ }
+
+ /**
+ * Set the imageReference property: The image reference of the gallery image.
+ *
+ * @param imageReference the imageReference value to set.
+ * @return the GalleryImageInner object itself.
+ */
+ public GalleryImageInner withImageReference(GalleryImageReference imageReference) {
+ this.imageReference = imageReference;
+ return this;
+ }
+
+ /**
+ * Get the icon property: The icon of the gallery image.
+ *
+ * @return the icon value.
+ */
+ public String icon() {
+ return this.icon;
+ }
+
+ /**
+ * Set the icon property: The icon of the gallery image.
+ *
+ * @param icon the icon value to set.
+ * @return the GalleryImageInner object itself.
+ */
+ public GalleryImageInner withIcon(String icon) {
+ this.icon = icon;
+ return this;
+ }
+
+ /**
+ * Get the enabled property: Indicates whether this gallery image is enabled.
+ *
+ * @return the enabled value.
+ */
+ public Boolean enabled() {
+ return this.enabled;
+ }
+
+ /**
+ * Set the enabled property: Indicates whether this gallery image is enabled.
+ *
+ * @param enabled the enabled value to set.
+ * @return the GalleryImageInner object itself.
+ */
+ public GalleryImageInner withEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * Get the planId property: The third party plan that applies to this image.
+ *
+ * @return the planId value.
+ */
+ public String planId() {
+ return this.planId;
+ }
+
+ /**
+ * Set the planId property: The third party plan that applies to this image.
+ *
+ * @param planId the planId value to set.
+ * @return the GalleryImageInner object itself.
+ */
+ public GalleryImageInner withPlanId(String planId) {
+ this.planId = planId;
+ return this;
+ }
+
+ /**
+ * Get the isPlanAuthorized property: Indicates if the plan has been authorized for programmatic deployment.
+ *
+ * @return the isPlanAuthorized value.
+ */
+ public Boolean isPlanAuthorized() {
+ return this.isPlanAuthorized;
+ }
+
+ /**
+ * Set the isPlanAuthorized property: Indicates if the plan has been authorized for programmatic deployment.
+ *
+ * @param isPlanAuthorized the isPlanAuthorized value to set.
+ * @return the GalleryImageInner object itself.
+ */
+ public GalleryImageInner withIsPlanAuthorized(Boolean isPlanAuthorized) {
+ this.isPlanAuthorized = isPlanAuthorized;
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public GalleryImageInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public GalleryImageInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (imageReference() != null) {
+ imageReference().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/GenerateUploadUriResponseInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/GenerateUploadUriResponseInner.java
new file mode 100644
index 000000000000..2a7b846f654c
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/GenerateUploadUriResponseInner.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Response body for generating an upload URI. */
+@Fluent
+public final class GenerateUploadUriResponseInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(GenerateUploadUriResponseInner.class);
+
+ /*
+ * The upload URI for the VHD.
+ */
+ @JsonProperty(value = "uploadUri")
+ private String uploadUri;
+
+ /**
+ * Get the uploadUri property: The upload URI for the VHD.
+ *
+ * @return the uploadUri value.
+ */
+ public String uploadUri() {
+ return this.uploadUri;
+ }
+
+ /**
+ * Set the uploadUri property: The upload URI for the VHD.
+ *
+ * @param uploadUri the uploadUri value to set.
+ * @return the GenerateUploadUriResponseInner object itself.
+ */
+ public GenerateUploadUriResponseInner withUploadUri(String uploadUri) {
+ this.uploadUri = uploadUri;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabCostInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabCostInner.java
new file mode 100644
index 000000000000..21455ba7d8d2
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabCostInner.java
@@ -0,0 +1,265 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.LabCostDetailsProperties;
+import com.azure.resourcemanager.devtestlabs.models.LabCostSummaryProperties;
+import com.azure.resourcemanager.devtestlabs.models.LabResourceCostProperties;
+import com.azure.resourcemanager.devtestlabs.models.TargetCostProperties;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** A cost item. */
+@JsonFlatten
+@Fluent
+public class LabCostInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(LabCostInner.class);
+
+ /*
+ * The target cost properties
+ */
+ @JsonProperty(value = "properties.targetCost")
+ private TargetCostProperties targetCost;
+
+ /*
+ * The lab cost summary component of the cost data.
+ */
+ @JsonProperty(value = "properties.labCostSummary", access = JsonProperty.Access.WRITE_ONLY)
+ private LabCostSummaryProperties labCostSummary;
+
+ /*
+ * The lab cost details component of the cost data.
+ */
+ @JsonProperty(value = "properties.labCostDetails", access = JsonProperty.Access.WRITE_ONLY)
+ private List labCostDetails;
+
+ /*
+ * The resource cost component of the cost data.
+ */
+ @JsonProperty(value = "properties.resourceCosts", access = JsonProperty.Access.WRITE_ONLY)
+ private List resourceCosts;
+
+ /*
+ * The currency code of the cost.
+ */
+ @JsonProperty(value = "properties.currencyCode")
+ private String currencyCode;
+
+ /*
+ * The start time of the cost data.
+ */
+ @JsonProperty(value = "properties.startDateTime")
+ private OffsetDateTime startDateTime;
+
+ /*
+ * The end time of the cost data.
+ */
+ @JsonProperty(value = "properties.endDateTime")
+ private OffsetDateTime endDateTime;
+
+ /*
+ * The creation date of the cost.
+ */
+ @JsonProperty(value = "properties.createdDate")
+ private OffsetDateTime createdDate;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the targetCost property: The target cost properties.
+ *
+ * @return the targetCost value.
+ */
+ public TargetCostProperties targetCost() {
+ return this.targetCost;
+ }
+
+ /**
+ * Set the targetCost property: The target cost properties.
+ *
+ * @param targetCost the targetCost value to set.
+ * @return the LabCostInner object itself.
+ */
+ public LabCostInner withTargetCost(TargetCostProperties targetCost) {
+ this.targetCost = targetCost;
+ return this;
+ }
+
+ /**
+ * Get the labCostSummary property: The lab cost summary component of the cost data.
+ *
+ * @return the labCostSummary value.
+ */
+ public LabCostSummaryProperties labCostSummary() {
+ return this.labCostSummary;
+ }
+
+ /**
+ * Get the labCostDetails property: The lab cost details component of the cost data.
+ *
+ * @return the labCostDetails value.
+ */
+ public List labCostDetails() {
+ return this.labCostDetails;
+ }
+
+ /**
+ * Get the resourceCosts property: The resource cost component of the cost data.
+ *
+ * @return the resourceCosts value.
+ */
+ public List resourceCosts() {
+ return this.resourceCosts;
+ }
+
+ /**
+ * Get the currencyCode property: The currency code of the cost.
+ *
+ * @return the currencyCode value.
+ */
+ public String currencyCode() {
+ return this.currencyCode;
+ }
+
+ /**
+ * Set the currencyCode property: The currency code of the cost.
+ *
+ * @param currencyCode the currencyCode value to set.
+ * @return the LabCostInner object itself.
+ */
+ public LabCostInner withCurrencyCode(String currencyCode) {
+ this.currencyCode = currencyCode;
+ return this;
+ }
+
+ /**
+ * Get the startDateTime property: The start time of the cost data.
+ *
+ * @return the startDateTime value.
+ */
+ public OffsetDateTime startDateTime() {
+ return this.startDateTime;
+ }
+
+ /**
+ * Set the startDateTime property: The start time of the cost data.
+ *
+ * @param startDateTime the startDateTime value to set.
+ * @return the LabCostInner object itself.
+ */
+ public LabCostInner withStartDateTime(OffsetDateTime startDateTime) {
+ this.startDateTime = startDateTime;
+ return this;
+ }
+
+ /**
+ * Get the endDateTime property: The end time of the cost data.
+ *
+ * @return the endDateTime value.
+ */
+ public OffsetDateTime endDateTime() {
+ return this.endDateTime;
+ }
+
+ /**
+ * Set the endDateTime property: The end time of the cost data.
+ *
+ * @param endDateTime the endDateTime value to set.
+ * @return the LabCostInner object itself.
+ */
+ public LabCostInner withEndDateTime(OffsetDateTime endDateTime) {
+ this.endDateTime = endDateTime;
+ return this;
+ }
+
+ /**
+ * Get the createdDate property: The creation date of the cost.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Set the createdDate property: The creation date of the cost.
+ *
+ * @param createdDate the createdDate value to set.
+ * @return the LabCostInner object itself.
+ */
+ public LabCostInner withCreatedDate(OffsetDateTime createdDate) {
+ this.createdDate = createdDate;
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public LabCostInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public LabCostInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (targetCost() != null) {
+ targetCost().validate();
+ }
+ if (labCostSummary() != null) {
+ labCostSummary().validate();
+ }
+ if (labCostDetails() != null) {
+ labCostDetails().forEach(e -> e.validate());
+ }
+ if (resourceCosts() != null) {
+ resourceCosts().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabInner.java
new file mode 100644
index 000000000000..f69209b3665a
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabInner.java
@@ -0,0 +1,470 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.EnvironmentPermission;
+import com.azure.resourcemanager.devtestlabs.models.LabAnnouncementProperties;
+import com.azure.resourcemanager.devtestlabs.models.LabSupportProperties;
+import com.azure.resourcemanager.devtestlabs.models.PremiumDataDisk;
+import com.azure.resourcemanager.devtestlabs.models.StorageType;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** A lab. */
+@JsonFlatten
+@Fluent
+public class LabInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(LabInner.class);
+
+ /*
+ * The lab's default storage account.
+ */
+ @JsonProperty(value = "properties.defaultStorageAccount", access = JsonProperty.Access.WRITE_ONLY)
+ private String defaultStorageAccount;
+
+ /*
+ * The lab's default premium storage account.
+ */
+ @JsonProperty(value = "properties.defaultPremiumStorageAccount", access = JsonProperty.Access.WRITE_ONLY)
+ private String defaultPremiumStorageAccount;
+
+ /*
+ * The lab's artifact storage account.
+ */
+ @JsonProperty(value = "properties.artifactsStorageAccount", access = JsonProperty.Access.WRITE_ONLY)
+ private String artifactsStorageAccount;
+
+ /*
+ * The lab's premium data disk storage account.
+ */
+ @JsonProperty(value = "properties.premiumDataDiskStorageAccount", access = JsonProperty.Access.WRITE_ONLY)
+ private String premiumDataDiskStorageAccount;
+
+ /*
+ * The lab's Key vault.
+ */
+ @JsonProperty(value = "properties.vaultName", access = JsonProperty.Access.WRITE_ONLY)
+ private String vaultName;
+
+ /*
+ * Type of storage used by the lab. It can be either Premium or Standard.
+ * Default is Premium.
+ */
+ @JsonProperty(value = "properties.labStorageType")
+ private StorageType labStorageType;
+
+ /*
+ * The ordered list of artifact resource IDs that should be applied on all
+ * Linux VM creations by default, prior to the artifacts specified by the
+ * user.
+ */
+ @JsonProperty(value = "properties.mandatoryArtifactsResourceIdsLinux")
+ private List mandatoryArtifactsResourceIdsLinux;
+
+ /*
+ * The ordered list of artifact resource IDs that should be applied on all
+ * Windows VM creations by default, prior to the artifacts specified by the
+ * user.
+ */
+ @JsonProperty(value = "properties.mandatoryArtifactsResourceIdsWindows")
+ private List mandatoryArtifactsResourceIdsWindows;
+
+ /*
+ * The creation date of the lab.
+ */
+ @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime createdDate;
+
+ /*
+ * The setting to enable usage of premium data disks.
+ * When its value is 'Enabled', creation of standard or premium data disks
+ * is allowed.
+ * When its value is 'Disabled', only creation of standard data disks is
+ * allowed.
+ */
+ @JsonProperty(value = "properties.premiumDataDisks")
+ private PremiumDataDisk premiumDataDisks;
+
+ /*
+ * The access rights to be granted to the user when provisioning an
+ * environment
+ */
+ @JsonProperty(value = "properties.environmentPermission")
+ private EnvironmentPermission environmentPermission;
+
+ /*
+ * The properties of any lab announcement associated with this lab
+ */
+ @JsonProperty(value = "properties.announcement")
+ private LabAnnouncementProperties announcement;
+
+ /*
+ * The properties of any lab support message associated with this lab
+ */
+ @JsonProperty(value = "properties.support")
+ private LabSupportProperties support;
+
+ /*
+ * The resource group in which all new lab virtual machines will be
+ * created. To let DevTest Labs manage resource group creation, set this
+ * value to null.
+ */
+ @JsonProperty(value = "properties.vmCreationResourceGroup", access = JsonProperty.Access.WRITE_ONLY)
+ private String vmCreationResourceGroup;
+
+ /*
+ * The public IP address for the lab's load balancer.
+ */
+ @JsonProperty(value = "properties.publicIpId", access = JsonProperty.Access.WRITE_ONLY)
+ private String publicIpId;
+
+ /*
+ * The load balancer used to for lab VMs that use shared IP address.
+ */
+ @JsonProperty(value = "properties.loadBalancerId", access = JsonProperty.Access.WRITE_ONLY)
+ private String loadBalancerId;
+
+ /*
+ * The Network Security Group attached to the lab VMs Network interfaces to
+ * restrict open ports.
+ */
+ @JsonProperty(value = "properties.networkSecurityGroupId", access = JsonProperty.Access.WRITE_ONLY)
+ private String networkSecurityGroupId;
+
+ /*
+ * Extended properties of the lab used for experimental features
+ */
+ @JsonProperty(value = "properties.extendedProperties")
+ private Map extendedProperties;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the defaultStorageAccount property: The lab's default storage account.
+ *
+ * @return the defaultStorageAccount value.
+ */
+ public String defaultStorageAccount() {
+ return this.defaultStorageAccount;
+ }
+
+ /**
+ * Get the defaultPremiumStorageAccount property: The lab's default premium storage account.
+ *
+ * @return the defaultPremiumStorageAccount value.
+ */
+ public String defaultPremiumStorageAccount() {
+ return this.defaultPremiumStorageAccount;
+ }
+
+ /**
+ * Get the artifactsStorageAccount property: The lab's artifact storage account.
+ *
+ * @return the artifactsStorageAccount value.
+ */
+ public String artifactsStorageAccount() {
+ return this.artifactsStorageAccount;
+ }
+
+ /**
+ * Get the premiumDataDiskStorageAccount property: The lab's premium data disk storage account.
+ *
+ * @return the premiumDataDiskStorageAccount value.
+ */
+ public String premiumDataDiskStorageAccount() {
+ return this.premiumDataDiskStorageAccount;
+ }
+
+ /**
+ * Get the vaultName property: The lab's Key vault.
+ *
+ * @return the vaultName value.
+ */
+ public String vaultName() {
+ return this.vaultName;
+ }
+
+ /**
+ * Get the labStorageType property: Type of storage used by the lab. It can be either Premium or Standard. Default
+ * is Premium.
+ *
+ * @return the labStorageType value.
+ */
+ public StorageType labStorageType() {
+ return this.labStorageType;
+ }
+
+ /**
+ * Set the labStorageType property: Type of storage used by the lab. It can be either Premium or Standard. Default
+ * is Premium.
+ *
+ * @param labStorageType the labStorageType value to set.
+ * @return the LabInner object itself.
+ */
+ public LabInner withLabStorageType(StorageType labStorageType) {
+ this.labStorageType = labStorageType;
+ return this;
+ }
+
+ /**
+ * Get the mandatoryArtifactsResourceIdsLinux property: The ordered list of artifact resource IDs that should be
+ * applied on all Linux VM creations by default, prior to the artifacts specified by the user.
+ *
+ * @return the mandatoryArtifactsResourceIdsLinux value.
+ */
+ public List mandatoryArtifactsResourceIdsLinux() {
+ return this.mandatoryArtifactsResourceIdsLinux;
+ }
+
+ /**
+ * Set the mandatoryArtifactsResourceIdsLinux property: The ordered list of artifact resource IDs that should be
+ * applied on all Linux VM creations by default, prior to the artifacts specified by the user.
+ *
+ * @param mandatoryArtifactsResourceIdsLinux the mandatoryArtifactsResourceIdsLinux value to set.
+ * @return the LabInner object itself.
+ */
+ public LabInner withMandatoryArtifactsResourceIdsLinux(List mandatoryArtifactsResourceIdsLinux) {
+ this.mandatoryArtifactsResourceIdsLinux = mandatoryArtifactsResourceIdsLinux;
+ return this;
+ }
+
+ /**
+ * Get the mandatoryArtifactsResourceIdsWindows property: The ordered list of artifact resource IDs that should be
+ * applied on all Windows VM creations by default, prior to the artifacts specified by the user.
+ *
+ * @return the mandatoryArtifactsResourceIdsWindows value.
+ */
+ public List mandatoryArtifactsResourceIdsWindows() {
+ return this.mandatoryArtifactsResourceIdsWindows;
+ }
+
+ /**
+ * Set the mandatoryArtifactsResourceIdsWindows property: The ordered list of artifact resource IDs that should be
+ * applied on all Windows VM creations by default, prior to the artifacts specified by the user.
+ *
+ * @param mandatoryArtifactsResourceIdsWindows the mandatoryArtifactsResourceIdsWindows value to set.
+ * @return the LabInner object itself.
+ */
+ public LabInner withMandatoryArtifactsResourceIdsWindows(List mandatoryArtifactsResourceIdsWindows) {
+ this.mandatoryArtifactsResourceIdsWindows = mandatoryArtifactsResourceIdsWindows;
+ return this;
+ }
+
+ /**
+ * Get the createdDate property: The creation date of the lab.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Get the premiumDataDisks property: The setting to enable usage of premium data disks. When its value is
+ * 'Enabled', creation of standard or premium data disks is allowed. When its value is 'Disabled', only creation of
+ * standard data disks is allowed.
+ *
+ * @return the premiumDataDisks value.
+ */
+ public PremiumDataDisk premiumDataDisks() {
+ return this.premiumDataDisks;
+ }
+
+ /**
+ * Set the premiumDataDisks property: The setting to enable usage of premium data disks. When its value is
+ * 'Enabled', creation of standard or premium data disks is allowed. When its value is 'Disabled', only creation of
+ * standard data disks is allowed.
+ *
+ * @param premiumDataDisks the premiumDataDisks value to set.
+ * @return the LabInner object itself.
+ */
+ public LabInner withPremiumDataDisks(PremiumDataDisk premiumDataDisks) {
+ this.premiumDataDisks = premiumDataDisks;
+ return this;
+ }
+
+ /**
+ * Get the environmentPermission property: The access rights to be granted to the user when provisioning an
+ * environment.
+ *
+ * @return the environmentPermission value.
+ */
+ public EnvironmentPermission environmentPermission() {
+ return this.environmentPermission;
+ }
+
+ /**
+ * Set the environmentPermission property: The access rights to be granted to the user when provisioning an
+ * environment.
+ *
+ * @param environmentPermission the environmentPermission value to set.
+ * @return the LabInner object itself.
+ */
+ public LabInner withEnvironmentPermission(EnvironmentPermission environmentPermission) {
+ this.environmentPermission = environmentPermission;
+ return this;
+ }
+
+ /**
+ * Get the announcement property: The properties of any lab announcement associated with this lab.
+ *
+ * @return the announcement value.
+ */
+ public LabAnnouncementProperties announcement() {
+ return this.announcement;
+ }
+
+ /**
+ * Set the announcement property: The properties of any lab announcement associated with this lab.
+ *
+ * @param announcement the announcement value to set.
+ * @return the LabInner object itself.
+ */
+ public LabInner withAnnouncement(LabAnnouncementProperties announcement) {
+ this.announcement = announcement;
+ return this;
+ }
+
+ /**
+ * Get the support property: The properties of any lab support message associated with this lab.
+ *
+ * @return the support value.
+ */
+ public LabSupportProperties support() {
+ return this.support;
+ }
+
+ /**
+ * Set the support property: The properties of any lab support message associated with this lab.
+ *
+ * @param support the support value to set.
+ * @return the LabInner object itself.
+ */
+ public LabInner withSupport(LabSupportProperties support) {
+ this.support = support;
+ return this;
+ }
+
+ /**
+ * Get the vmCreationResourceGroup property: The resource group in which all new lab virtual machines will be
+ * created. To let DevTest Labs manage resource group creation, set this value to null.
+ *
+ * @return the vmCreationResourceGroup value.
+ */
+ public String vmCreationResourceGroup() {
+ return this.vmCreationResourceGroup;
+ }
+
+ /**
+ * Get the publicIpId property: The public IP address for the lab's load balancer.
+ *
+ * @return the publicIpId value.
+ */
+ public String publicIpId() {
+ return this.publicIpId;
+ }
+
+ /**
+ * Get the loadBalancerId property: The load balancer used to for lab VMs that use shared IP address.
+ *
+ * @return the loadBalancerId value.
+ */
+ public String loadBalancerId() {
+ return this.loadBalancerId;
+ }
+
+ /**
+ * Get the networkSecurityGroupId property: The Network Security Group attached to the lab VMs Network interfaces to
+ * restrict open ports.
+ *
+ * @return the networkSecurityGroupId value.
+ */
+ public String networkSecurityGroupId() {
+ return this.networkSecurityGroupId;
+ }
+
+ /**
+ * Get the extendedProperties property: Extended properties of the lab used for experimental features.
+ *
+ * @return the extendedProperties value.
+ */
+ public Map extendedProperties() {
+ return this.extendedProperties;
+ }
+
+ /**
+ * Set the extendedProperties property: Extended properties of the lab used for experimental features.
+ *
+ * @param extendedProperties the extendedProperties value to set.
+ * @return the LabInner object itself.
+ */
+ public LabInner withExtendedProperties(Map extendedProperties) {
+ this.extendedProperties = extendedProperties;
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public LabInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public LabInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (announcement() != null) {
+ announcement().validate();
+ }
+ if (support() != null) {
+ support().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabVhdInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabVhdInner.java
new file mode 100644
index 000000000000..e7e6ad2935c7
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabVhdInner.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Properties of a VHD in the lab. */
+@Fluent
+public final class LabVhdInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(LabVhdInner.class);
+
+ /*
+ * The URI to the VHD.
+ */
+ @JsonProperty(value = "id")
+ private String id;
+
+ /**
+ * Get the id property: The URI to the VHD.
+ *
+ * @return the id value.
+ */
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Set the id property: The URI to the VHD.
+ *
+ * @param id the id value to set.
+ * @return the LabVhdInner object itself.
+ */
+ public LabVhdInner withId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabVirtualMachineInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabVirtualMachineInner.java
new file mode 100644
index 000000000000..5bad56a004e4
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/LabVirtualMachineInner.java
@@ -0,0 +1,863 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.ArtifactDeploymentStatusProperties;
+import com.azure.resourcemanager.devtestlabs.models.ArtifactInstallProperties;
+import com.azure.resourcemanager.devtestlabs.models.ComputeVmProperties;
+import com.azure.resourcemanager.devtestlabs.models.DataDiskProperties;
+import com.azure.resourcemanager.devtestlabs.models.GalleryImageReference;
+import com.azure.resourcemanager.devtestlabs.models.NetworkInterfaceProperties;
+import com.azure.resourcemanager.devtestlabs.models.ScheduleCreationParameter;
+import com.azure.resourcemanager.devtestlabs.models.VirtualMachineCreationSource;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** A virtual machine. */
+@JsonFlatten
+@Fluent
+public class LabVirtualMachineInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(LabVirtualMachineInner.class);
+
+ /*
+ * The notes of the virtual machine.
+ */
+ @JsonProperty(value = "properties.notes")
+ private String notes;
+
+ /*
+ * The object identifier of the owner of the virtual machine.
+ */
+ @JsonProperty(value = "properties.ownerObjectId")
+ private String ownerObjectId;
+
+ /*
+ * The user principal name of the virtual machine owner.
+ */
+ @JsonProperty(value = "properties.ownerUserPrincipalName")
+ private String ownerUserPrincipalName;
+
+ /*
+ * The object identifier of the creator of the virtual machine.
+ */
+ @JsonProperty(value = "properties.createdByUserId", access = JsonProperty.Access.WRITE_ONLY)
+ private String createdByUserId;
+
+ /*
+ * The email address of creator of the virtual machine.
+ */
+ @JsonProperty(value = "properties.createdByUser", access = JsonProperty.Access.WRITE_ONLY)
+ private String createdByUser;
+
+ /*
+ * The creation date of the virtual machine.
+ */
+ @JsonProperty(value = "properties.createdDate")
+ private OffsetDateTime createdDate;
+
+ /*
+ * The resource identifier (Microsoft.Compute) of the virtual machine.
+ */
+ @JsonProperty(value = "properties.computeId", access = JsonProperty.Access.WRITE_ONLY)
+ private String computeId;
+
+ /*
+ * The custom image identifier of the virtual machine.
+ */
+ @JsonProperty(value = "properties.customImageId")
+ private String customImageId;
+
+ /*
+ * The OS type of the virtual machine.
+ */
+ @JsonProperty(value = "properties.osType", access = JsonProperty.Access.WRITE_ONLY)
+ private String osType;
+
+ /*
+ * The size of the virtual machine.
+ */
+ @JsonProperty(value = "properties.size")
+ private String size;
+
+ /*
+ * The user name of the virtual machine.
+ */
+ @JsonProperty(value = "properties.userName")
+ private String username;
+
+ /*
+ * The password of the virtual machine administrator.
+ */
+ @JsonProperty(value = "properties.password")
+ private String password;
+
+ /*
+ * The SSH key of the virtual machine administrator.
+ */
+ @JsonProperty(value = "properties.sshKey")
+ private String sshKey;
+
+ /*
+ * Indicates whether this virtual machine uses an SSH key for
+ * authentication.
+ */
+ @JsonProperty(value = "properties.isAuthenticationWithSshKey")
+ private Boolean isAuthenticationWithSshKey;
+
+ /*
+ * The fully-qualified domain name of the virtual machine.
+ */
+ @JsonProperty(value = "properties.fqdn", access = JsonProperty.Access.WRITE_ONLY)
+ private String fqdn;
+
+ /*
+ * The lab subnet name of the virtual machine.
+ */
+ @JsonProperty(value = "properties.labSubnetName")
+ private String labSubnetName;
+
+ /*
+ * The lab virtual network identifier of the virtual machine.
+ */
+ @JsonProperty(value = "properties.labVirtualNetworkId")
+ private String labVirtualNetworkId;
+
+ /*
+ * Indicates whether the virtual machine is to be created without a public
+ * IP address.
+ */
+ @JsonProperty(value = "properties.disallowPublicIpAddress")
+ private Boolean disallowPublicIpAddress;
+
+ /*
+ * The artifacts to be installed on the virtual machine.
+ */
+ @JsonProperty(value = "properties.artifacts")
+ private List artifacts;
+
+ /*
+ * The artifact deployment status for the virtual machine.
+ */
+ @JsonProperty(value = "properties.artifactDeploymentStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private ArtifactDeploymentStatusProperties artifactDeploymentStatus;
+
+ /*
+ * The Microsoft Azure Marketplace image reference of the virtual machine.
+ */
+ @JsonProperty(value = "properties.galleryImageReference")
+ private GalleryImageReference galleryImageReference;
+
+ /*
+ * The id of the plan associated with the virtual machine image
+ */
+ @JsonProperty(value = "properties.planId")
+ private String planId;
+
+ /*
+ * The compute virtual machine properties.
+ */
+ @JsonProperty(value = "properties.computeVm", access = JsonProperty.Access.WRITE_ONLY)
+ private ComputeVmProperties computeVm;
+
+ /*
+ * The network interface properties.
+ */
+ @JsonProperty(value = "properties.networkInterface")
+ private NetworkInterfaceProperties networkInterface;
+
+ /*
+ * The applicable schedule for the virtual machine.
+ */
+ @JsonProperty(value = "properties.applicableSchedule", access = JsonProperty.Access.WRITE_ONLY)
+ private ApplicableScheduleInner applicableSchedule;
+
+ /*
+ * The expiration date for VM.
+ */
+ @JsonProperty(value = "properties.expirationDate")
+ private OffsetDateTime expirationDate;
+
+ /*
+ * Indicates whether another user can take ownership of the virtual machine
+ */
+ @JsonProperty(value = "properties.allowClaim")
+ private Boolean allowClaim;
+
+ /*
+ * Storage type to use for virtual machine (i.e. Standard, Premium).
+ */
+ @JsonProperty(value = "properties.storageType")
+ private String storageType;
+
+ /*
+ * Tells source of creation of lab virtual machine. Output property only.
+ */
+ @JsonProperty(value = "properties.virtualMachineCreationSource", access = JsonProperty.Access.WRITE_ONLY)
+ private VirtualMachineCreationSource virtualMachineCreationSource;
+
+ /*
+ * The resource ID of the environment that contains this virtual machine,
+ * if any.
+ */
+ @JsonProperty(value = "properties.environmentId")
+ private String environmentId;
+
+ /*
+ * New or existing data disks to attach to the virtual machine after
+ * creation
+ */
+ @JsonProperty(value = "properties.dataDiskParameters")
+ private List dataDiskParameters;
+
+ /*
+ * Virtual Machine schedules to be created
+ */
+ @JsonProperty(value = "properties.scheduleParameters")
+ private List scheduleParameters;
+
+ /*
+ * Last known compute power state captured in DTL
+ */
+ @JsonProperty(value = "properties.lastKnownPowerState", access = JsonProperty.Access.WRITE_ONLY)
+ private String lastKnownPowerState;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the notes property: The notes of the virtual machine.
+ *
+ * @return the notes value.
+ */
+ public String notes() {
+ return this.notes;
+ }
+
+ /**
+ * Set the notes property: The notes of the virtual machine.
+ *
+ * @param notes the notes value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withNotes(String notes) {
+ this.notes = notes;
+ return this;
+ }
+
+ /**
+ * Get the ownerObjectId property: The object identifier of the owner of the virtual machine.
+ *
+ * @return the ownerObjectId value.
+ */
+ public String ownerObjectId() {
+ return this.ownerObjectId;
+ }
+
+ /**
+ * Set the ownerObjectId property: The object identifier of the owner of the virtual machine.
+ *
+ * @param ownerObjectId the ownerObjectId value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withOwnerObjectId(String ownerObjectId) {
+ this.ownerObjectId = ownerObjectId;
+ return this;
+ }
+
+ /**
+ * Get the ownerUserPrincipalName property: The user principal name of the virtual machine owner.
+ *
+ * @return the ownerUserPrincipalName value.
+ */
+ public String ownerUserPrincipalName() {
+ return this.ownerUserPrincipalName;
+ }
+
+ /**
+ * Set the ownerUserPrincipalName property: The user principal name of the virtual machine owner.
+ *
+ * @param ownerUserPrincipalName the ownerUserPrincipalName value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withOwnerUserPrincipalName(String ownerUserPrincipalName) {
+ this.ownerUserPrincipalName = ownerUserPrincipalName;
+ return this;
+ }
+
+ /**
+ * Get the createdByUserId property: The object identifier of the creator of the virtual machine.
+ *
+ * @return the createdByUserId value.
+ */
+ public String createdByUserId() {
+ return this.createdByUserId;
+ }
+
+ /**
+ * Get the createdByUser property: The email address of creator of the virtual machine.
+ *
+ * @return the createdByUser value.
+ */
+ public String createdByUser() {
+ return this.createdByUser;
+ }
+
+ /**
+ * Get the createdDate property: The creation date of the virtual machine.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Set the createdDate property: The creation date of the virtual machine.
+ *
+ * @param createdDate the createdDate value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withCreatedDate(OffsetDateTime createdDate) {
+ this.createdDate = createdDate;
+ return this;
+ }
+
+ /**
+ * Get the computeId property: The resource identifier (Microsoft.Compute) of the virtual machine.
+ *
+ * @return the computeId value.
+ */
+ public String computeId() {
+ return this.computeId;
+ }
+
+ /**
+ * Get the customImageId property: The custom image identifier of the virtual machine.
+ *
+ * @return the customImageId value.
+ */
+ public String customImageId() {
+ return this.customImageId;
+ }
+
+ /**
+ * Set the customImageId property: The custom image identifier of the virtual machine.
+ *
+ * @param customImageId the customImageId value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withCustomImageId(String customImageId) {
+ this.customImageId = customImageId;
+ return this;
+ }
+
+ /**
+ * Get the osType property: The OS type of the virtual machine.
+ *
+ * @return the osType value.
+ */
+ public String osType() {
+ return this.osType;
+ }
+
+ /**
+ * Get the size property: The size of the virtual machine.
+ *
+ * @return the size value.
+ */
+ public String size() {
+ return this.size;
+ }
+
+ /**
+ * Set the size property: The size of the virtual machine.
+ *
+ * @param size the size value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withSize(String size) {
+ this.size = size;
+ return this;
+ }
+
+ /**
+ * Get the username property: The user name of the virtual machine.
+ *
+ * @return the username value.
+ */
+ public String username() {
+ return this.username;
+ }
+
+ /**
+ * Set the username property: The user name of the virtual machine.
+ *
+ * @param username the username value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withUsername(String username) {
+ this.username = username;
+ return this;
+ }
+
+ /**
+ * Get the password property: The password of the virtual machine administrator.
+ *
+ * @return the password value.
+ */
+ public String password() {
+ return this.password;
+ }
+
+ /**
+ * Set the password property: The password of the virtual machine administrator.
+ *
+ * @param password the password value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withPassword(String password) {
+ this.password = password;
+ return this;
+ }
+
+ /**
+ * Get the sshKey property: The SSH key of the virtual machine administrator.
+ *
+ * @return the sshKey value.
+ */
+ public String sshKey() {
+ return this.sshKey;
+ }
+
+ /**
+ * Set the sshKey property: The SSH key of the virtual machine administrator.
+ *
+ * @param sshKey the sshKey value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withSshKey(String sshKey) {
+ this.sshKey = sshKey;
+ return this;
+ }
+
+ /**
+ * Get the isAuthenticationWithSshKey property: Indicates whether this virtual machine uses an SSH key for
+ * authentication.
+ *
+ * @return the isAuthenticationWithSshKey value.
+ */
+ public Boolean isAuthenticationWithSshKey() {
+ return this.isAuthenticationWithSshKey;
+ }
+
+ /**
+ * Set the isAuthenticationWithSshKey property: Indicates whether this virtual machine uses an SSH key for
+ * authentication.
+ *
+ * @param isAuthenticationWithSshKey the isAuthenticationWithSshKey value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withIsAuthenticationWithSshKey(Boolean isAuthenticationWithSshKey) {
+ this.isAuthenticationWithSshKey = isAuthenticationWithSshKey;
+ return this;
+ }
+
+ /**
+ * Get the fqdn property: The fully-qualified domain name of the virtual machine.
+ *
+ * @return the fqdn value.
+ */
+ public String fqdn() {
+ return this.fqdn;
+ }
+
+ /**
+ * Get the labSubnetName property: The lab subnet name of the virtual machine.
+ *
+ * @return the labSubnetName value.
+ */
+ public String labSubnetName() {
+ return this.labSubnetName;
+ }
+
+ /**
+ * Set the labSubnetName property: The lab subnet name of the virtual machine.
+ *
+ * @param labSubnetName the labSubnetName value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withLabSubnetName(String labSubnetName) {
+ this.labSubnetName = labSubnetName;
+ return this;
+ }
+
+ /**
+ * Get the labVirtualNetworkId property: The lab virtual network identifier of the virtual machine.
+ *
+ * @return the labVirtualNetworkId value.
+ */
+ public String labVirtualNetworkId() {
+ return this.labVirtualNetworkId;
+ }
+
+ /**
+ * Set the labVirtualNetworkId property: The lab virtual network identifier of the virtual machine.
+ *
+ * @param labVirtualNetworkId the labVirtualNetworkId value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withLabVirtualNetworkId(String labVirtualNetworkId) {
+ this.labVirtualNetworkId = labVirtualNetworkId;
+ return this;
+ }
+
+ /**
+ * Get the disallowPublicIpAddress property: Indicates whether the virtual machine is to be created without a public
+ * IP address.
+ *
+ * @return the disallowPublicIpAddress value.
+ */
+ public Boolean disallowPublicIpAddress() {
+ return this.disallowPublicIpAddress;
+ }
+
+ /**
+ * Set the disallowPublicIpAddress property: Indicates whether the virtual machine is to be created without a public
+ * IP address.
+ *
+ * @param disallowPublicIpAddress the disallowPublicIpAddress value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withDisallowPublicIpAddress(Boolean disallowPublicIpAddress) {
+ this.disallowPublicIpAddress = disallowPublicIpAddress;
+ return this;
+ }
+
+ /**
+ * Get the artifacts property: The artifacts to be installed on the virtual machine.
+ *
+ * @return the artifacts value.
+ */
+ public List artifacts() {
+ return this.artifacts;
+ }
+
+ /**
+ * Set the artifacts property: The artifacts to be installed on the virtual machine.
+ *
+ * @param artifacts the artifacts value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withArtifacts(List artifacts) {
+ this.artifacts = artifacts;
+ return this;
+ }
+
+ /**
+ * Get the artifactDeploymentStatus property: The artifact deployment status for the virtual machine.
+ *
+ * @return the artifactDeploymentStatus value.
+ */
+ public ArtifactDeploymentStatusProperties artifactDeploymentStatus() {
+ return this.artifactDeploymentStatus;
+ }
+
+ /**
+ * Get the galleryImageReference property: The Microsoft Azure Marketplace image reference of the virtual machine.
+ *
+ * @return the galleryImageReference value.
+ */
+ public GalleryImageReference galleryImageReference() {
+ return this.galleryImageReference;
+ }
+
+ /**
+ * Set the galleryImageReference property: The Microsoft Azure Marketplace image reference of the virtual machine.
+ *
+ * @param galleryImageReference the galleryImageReference value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withGalleryImageReference(GalleryImageReference galleryImageReference) {
+ this.galleryImageReference = galleryImageReference;
+ return this;
+ }
+
+ /**
+ * Get the planId property: The id of the plan associated with the virtual machine image.
+ *
+ * @return the planId value.
+ */
+ public String planId() {
+ return this.planId;
+ }
+
+ /**
+ * Set the planId property: The id of the plan associated with the virtual machine image.
+ *
+ * @param planId the planId value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withPlanId(String planId) {
+ this.planId = planId;
+ return this;
+ }
+
+ /**
+ * Get the computeVm property: The compute virtual machine properties.
+ *
+ * @return the computeVm value.
+ */
+ public ComputeVmProperties computeVm() {
+ return this.computeVm;
+ }
+
+ /**
+ * Get the networkInterface property: The network interface properties.
+ *
+ * @return the networkInterface value.
+ */
+ public NetworkInterfaceProperties networkInterface() {
+ return this.networkInterface;
+ }
+
+ /**
+ * Set the networkInterface property: The network interface properties.
+ *
+ * @param networkInterface the networkInterface value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withNetworkInterface(NetworkInterfaceProperties networkInterface) {
+ this.networkInterface = networkInterface;
+ return this;
+ }
+
+ /**
+ * Get the applicableSchedule property: The applicable schedule for the virtual machine.
+ *
+ * @return the applicableSchedule value.
+ */
+ public ApplicableScheduleInner applicableSchedule() {
+ return this.applicableSchedule;
+ }
+
+ /**
+ * Get the expirationDate property: The expiration date for VM.
+ *
+ * @return the expirationDate value.
+ */
+ public OffsetDateTime expirationDate() {
+ return this.expirationDate;
+ }
+
+ /**
+ * Set the expirationDate property: The expiration date for VM.
+ *
+ * @param expirationDate the expirationDate value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withExpirationDate(OffsetDateTime expirationDate) {
+ this.expirationDate = expirationDate;
+ return this;
+ }
+
+ /**
+ * Get the allowClaim property: Indicates whether another user can take ownership of the virtual machine.
+ *
+ * @return the allowClaim value.
+ */
+ public Boolean allowClaim() {
+ return this.allowClaim;
+ }
+
+ /**
+ * Set the allowClaim property: Indicates whether another user can take ownership of the virtual machine.
+ *
+ * @param allowClaim the allowClaim value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withAllowClaim(Boolean allowClaim) {
+ this.allowClaim = allowClaim;
+ return this;
+ }
+
+ /**
+ * Get the storageType property: Storage type to use for virtual machine (i.e. Standard, Premium).
+ *
+ * @return the storageType value.
+ */
+ public String storageType() {
+ return this.storageType;
+ }
+
+ /**
+ * Set the storageType property: Storage type to use for virtual machine (i.e. Standard, Premium).
+ *
+ * @param storageType the storageType value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withStorageType(String storageType) {
+ this.storageType = storageType;
+ return this;
+ }
+
+ /**
+ * Get the virtualMachineCreationSource property: Tells source of creation of lab virtual machine. Output property
+ * only.
+ *
+ * @return the virtualMachineCreationSource value.
+ */
+ public VirtualMachineCreationSource virtualMachineCreationSource() {
+ return this.virtualMachineCreationSource;
+ }
+
+ /**
+ * Get the environmentId property: The resource ID of the environment that contains this virtual machine, if any.
+ *
+ * @return the environmentId value.
+ */
+ public String environmentId() {
+ return this.environmentId;
+ }
+
+ /**
+ * Set the environmentId property: The resource ID of the environment that contains this virtual machine, if any.
+ *
+ * @param environmentId the environmentId value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withEnvironmentId(String environmentId) {
+ this.environmentId = environmentId;
+ return this;
+ }
+
+ /**
+ * Get the dataDiskParameters property: New or existing data disks to attach to the virtual machine after creation.
+ *
+ * @return the dataDiskParameters value.
+ */
+ public List dataDiskParameters() {
+ return this.dataDiskParameters;
+ }
+
+ /**
+ * Set the dataDiskParameters property: New or existing data disks to attach to the virtual machine after creation.
+ *
+ * @param dataDiskParameters the dataDiskParameters value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withDataDiskParameters(List dataDiskParameters) {
+ this.dataDiskParameters = dataDiskParameters;
+ return this;
+ }
+
+ /**
+ * Get the scheduleParameters property: Virtual Machine schedules to be created.
+ *
+ * @return the scheduleParameters value.
+ */
+ public List scheduleParameters() {
+ return this.scheduleParameters;
+ }
+
+ /**
+ * Set the scheduleParameters property: Virtual Machine schedules to be created.
+ *
+ * @param scheduleParameters the scheduleParameters value to set.
+ * @return the LabVirtualMachineInner object itself.
+ */
+ public LabVirtualMachineInner withScheduleParameters(List scheduleParameters) {
+ this.scheduleParameters = scheduleParameters;
+ return this;
+ }
+
+ /**
+ * Get the lastKnownPowerState property: Last known compute power state captured in DTL.
+ *
+ * @return the lastKnownPowerState value.
+ */
+ public String lastKnownPowerState() {
+ return this.lastKnownPowerState;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public LabVirtualMachineInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public LabVirtualMachineInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (artifacts() != null) {
+ artifacts().forEach(e -> e.validate());
+ }
+ if (artifactDeploymentStatus() != null) {
+ artifactDeploymentStatus().validate();
+ }
+ if (galleryImageReference() != null) {
+ galleryImageReference().validate();
+ }
+ if (computeVm() != null) {
+ computeVm().validate();
+ }
+ if (networkInterface() != null) {
+ networkInterface().validate();
+ }
+ if (applicableSchedule() != null) {
+ applicableSchedule().validate();
+ }
+ if (dataDiskParameters() != null) {
+ dataDiskParameters().forEach(e -> e.validate());
+ }
+ if (scheduleParameters() != null) {
+ scheduleParameters().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/NotificationChannelInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/NotificationChannelInner.java
new file mode 100644
index 000000000000..a58c1b1518d5
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/NotificationChannelInner.java
@@ -0,0 +1,229 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.Event;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** A notification. */
+@JsonFlatten
+@Fluent
+public class NotificationChannelInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(NotificationChannelInner.class);
+
+ /*
+ * The webhook URL to send notifications to.
+ */
+ @JsonProperty(value = "properties.webHookUrl")
+ private String webhookUrl;
+
+ /*
+ * The email recipient to send notifications to (can be a list of
+ * semi-colon separated email addresses).
+ */
+ @JsonProperty(value = "properties.emailRecipient")
+ private String emailRecipient;
+
+ /*
+ * The locale to use when sending a notification (fallback for unsupported
+ * languages is EN).
+ */
+ @JsonProperty(value = "properties.notificationLocale")
+ private String notificationLocale;
+
+ /*
+ * Description of notification.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /*
+ * The list of event for which this notification is enabled.
+ */
+ @JsonProperty(value = "properties.events")
+ private List events;
+
+ /*
+ * The creation date of the notification channel.
+ */
+ @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime createdDate;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the webhookUrl property: The webhook URL to send notifications to.
+ *
+ * @return the webhookUrl value.
+ */
+ public String webhookUrl() {
+ return this.webhookUrl;
+ }
+
+ /**
+ * Set the webhookUrl property: The webhook URL to send notifications to.
+ *
+ * @param webhookUrl the webhookUrl value to set.
+ * @return the NotificationChannelInner object itself.
+ */
+ public NotificationChannelInner withWebhookUrl(String webhookUrl) {
+ this.webhookUrl = webhookUrl;
+ return this;
+ }
+
+ /**
+ * Get the emailRecipient property: The email recipient to send notifications to (can be a list of semi-colon
+ * separated email addresses).
+ *
+ * @return the emailRecipient value.
+ */
+ public String emailRecipient() {
+ return this.emailRecipient;
+ }
+
+ /**
+ * Set the emailRecipient property: The email recipient to send notifications to (can be a list of semi-colon
+ * separated email addresses).
+ *
+ * @param emailRecipient the emailRecipient value to set.
+ * @return the NotificationChannelInner object itself.
+ */
+ public NotificationChannelInner withEmailRecipient(String emailRecipient) {
+ this.emailRecipient = emailRecipient;
+ return this;
+ }
+
+ /**
+ * Get the notificationLocale property: The locale to use when sending a notification (fallback for unsupported
+ * languages is EN).
+ *
+ * @return the notificationLocale value.
+ */
+ public String notificationLocale() {
+ return this.notificationLocale;
+ }
+
+ /**
+ * Set the notificationLocale property: The locale to use when sending a notification (fallback for unsupported
+ * languages is EN).
+ *
+ * @param notificationLocale the notificationLocale value to set.
+ * @return the NotificationChannelInner object itself.
+ */
+ public NotificationChannelInner withNotificationLocale(String notificationLocale) {
+ this.notificationLocale = notificationLocale;
+ return this;
+ }
+
+ /**
+ * Get the description property: Description of notification.
+ *
+ * @return the description value.
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set the description property: Description of notification.
+ *
+ * @param description the description value to set.
+ * @return the NotificationChannelInner object itself.
+ */
+ public NotificationChannelInner withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get the events property: The list of event for which this notification is enabled.
+ *
+ * @return the events value.
+ */
+ public List events() {
+ return this.events;
+ }
+
+ /**
+ * Set the events property: The list of event for which this notification is enabled.
+ *
+ * @param events the events value to set.
+ * @return the NotificationChannelInner object itself.
+ */
+ public NotificationChannelInner withEvents(List events) {
+ this.events = events;
+ return this;
+ }
+
+ /**
+ * Get the createdDate property: The creation date of the notification channel.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public NotificationChannelInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public NotificationChannelInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (events() != null) {
+ events().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/OperationMetadataInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/OperationMetadataInner.java
new file mode 100644
index 000000000000..2f38d31f0b55
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/OperationMetadataInner.java
@@ -0,0 +1,80 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.OperationMetadataDisplay;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The REST API operation supported by DevTestLab ResourceProvider. */
+@Fluent
+public final class OperationMetadataInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationMetadataInner.class);
+
+ /*
+ * Operation name: {provider}/{resource}/{operation}
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /*
+ * The object that describes the operations
+ */
+ @JsonProperty(value = "display")
+ private OperationMetadataDisplay display;
+
+ /**
+ * Get the name property: Operation name: {provider}/{resource}/{operation}.
+ *
+ * @return the name value.
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name property: Operation name: {provider}/{resource}/{operation}.
+ *
+ * @param name the name value to set.
+ * @return the OperationMetadataInner object itself.
+ */
+ public OperationMetadataInner withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the display property: The object that describes the operations.
+ *
+ * @return the display value.
+ */
+ public OperationMetadataDisplay display() {
+ return this.display;
+ }
+
+ /**
+ * Set the display property: The object that describes the operations.
+ *
+ * @param display the display value to set.
+ * @return the OperationMetadataInner object itself.
+ */
+ public OperationMetadataInner withDisplay(OperationMetadataDisplay display) {
+ this.display = display;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (display() != null) {
+ display().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/OperationResultInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/OperationResultInner.java
new file mode 100644
index 000000000000..ab919833b35c
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/OperationResultInner.java
@@ -0,0 +1,107 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.HttpStatusCode;
+import com.azure.resourcemanager.devtestlabs.models.OperationError;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** An Operation Result. */
+@Fluent
+public final class OperationResultInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationResultInner.class);
+
+ /*
+ * The operation status.
+ */
+ @JsonProperty(value = "status")
+ private String status;
+
+ /*
+ * The status code for the operation.
+ */
+ @JsonProperty(value = "statusCode")
+ private HttpStatusCode statusCode;
+
+ /*
+ * Error details for the operation in case of a failure.
+ */
+ @JsonProperty(value = "error")
+ private OperationError error;
+
+ /**
+ * Get the status property: The operation status.
+ *
+ * @return the status value.
+ */
+ public String status() {
+ return this.status;
+ }
+
+ /**
+ * Set the status property: The operation status.
+ *
+ * @param status the status value to set.
+ * @return the OperationResultInner object itself.
+ */
+ public OperationResultInner withStatus(String status) {
+ this.status = status;
+ return this;
+ }
+
+ /**
+ * Get the statusCode property: The status code for the operation.
+ *
+ * @return the statusCode value.
+ */
+ public HttpStatusCode statusCode() {
+ return this.statusCode;
+ }
+
+ /**
+ * Set the statusCode property: The status code for the operation.
+ *
+ * @param statusCode the statusCode value to set.
+ * @return the OperationResultInner object itself.
+ */
+ public OperationResultInner withStatusCode(HttpStatusCode statusCode) {
+ this.statusCode = statusCode;
+ return this;
+ }
+
+ /**
+ * Get the error property: Error details for the operation in case of a failure.
+ *
+ * @return the error value.
+ */
+ public OperationError error() {
+ return this.error;
+ }
+
+ /**
+ * Set the error property: Error details for the operation in case of a failure.
+ *
+ * @param error the error value to set.
+ * @return the OperationResultInner object itself.
+ */
+ public OperationResultInner withError(OperationError error) {
+ this.error = error;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (error() != null) {
+ error().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/PolicyInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/PolicyInner.java
new file mode 100644
index 000000000000..c8ede6a5a05e
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/PolicyInner.java
@@ -0,0 +1,252 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.PolicyEvaluatorType;
+import com.azure.resourcemanager.devtestlabs.models.PolicyFactName;
+import com.azure.resourcemanager.devtestlabs.models.PolicyStatus;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** A Policy. */
+@JsonFlatten
+@Fluent
+public class PolicyInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(PolicyInner.class);
+
+ /*
+ * The description of the policy.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /*
+ * The status of the policy.
+ */
+ @JsonProperty(value = "properties.status")
+ private PolicyStatus status;
+
+ /*
+ * The fact name of the policy (e.g. LabVmCount, LabVmSize,
+ * MaxVmsAllowedPerLab, etc.
+ */
+ @JsonProperty(value = "properties.factName")
+ private PolicyFactName factName;
+
+ /*
+ * The fact data of the policy.
+ */
+ @JsonProperty(value = "properties.factData")
+ private String factData;
+
+ /*
+ * The threshold of the policy (i.e. a number for MaxValuePolicy, and a
+ * JSON array of values for AllowedValuesPolicy).
+ */
+ @JsonProperty(value = "properties.threshold")
+ private String threshold;
+
+ /*
+ * The evaluator type of the policy (i.e. AllowedValuesPolicy,
+ * MaxValuePolicy).
+ */
+ @JsonProperty(value = "properties.evaluatorType")
+ private PolicyEvaluatorType evaluatorType;
+
+ /*
+ * The creation date of the policy.
+ */
+ @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime createdDate;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the description property: The description of the policy.
+ *
+ * @return the description value.
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set the description property: The description of the policy.
+ *
+ * @param description the description value to set.
+ * @return the PolicyInner object itself.
+ */
+ public PolicyInner withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Get the status property: The status of the policy.
+ *
+ * @return the status value.
+ */
+ public PolicyStatus status() {
+ return this.status;
+ }
+
+ /**
+ * Set the status property: The status of the policy.
+ *
+ * @param status the status value to set.
+ * @return the PolicyInner object itself.
+ */
+ public PolicyInner withStatus(PolicyStatus status) {
+ this.status = status;
+ return this;
+ }
+
+ /**
+ * Get the factName property: The fact name of the policy (e.g. LabVmCount, LabVmSize, MaxVmsAllowedPerLab, etc.
+ *
+ * @return the factName value.
+ */
+ public PolicyFactName factName() {
+ return this.factName;
+ }
+
+ /**
+ * Set the factName property: The fact name of the policy (e.g. LabVmCount, LabVmSize, MaxVmsAllowedPerLab, etc.
+ *
+ * @param factName the factName value to set.
+ * @return the PolicyInner object itself.
+ */
+ public PolicyInner withFactName(PolicyFactName factName) {
+ this.factName = factName;
+ return this;
+ }
+
+ /**
+ * Get the factData property: The fact data of the policy.
+ *
+ * @return the factData value.
+ */
+ public String factData() {
+ return this.factData;
+ }
+
+ /**
+ * Set the factData property: The fact data of the policy.
+ *
+ * @param factData the factData value to set.
+ * @return the PolicyInner object itself.
+ */
+ public PolicyInner withFactData(String factData) {
+ this.factData = factData;
+ return this;
+ }
+
+ /**
+ * Get the threshold property: The threshold of the policy (i.e. a number for MaxValuePolicy, and a JSON array of
+ * values for AllowedValuesPolicy).
+ *
+ * @return the threshold value.
+ */
+ public String threshold() {
+ return this.threshold;
+ }
+
+ /**
+ * Set the threshold property: The threshold of the policy (i.e. a number for MaxValuePolicy, and a JSON array of
+ * values for AllowedValuesPolicy).
+ *
+ * @param threshold the threshold value to set.
+ * @return the PolicyInner object itself.
+ */
+ public PolicyInner withThreshold(String threshold) {
+ this.threshold = threshold;
+ return this;
+ }
+
+ /**
+ * Get the evaluatorType property: The evaluator type of the policy (i.e. AllowedValuesPolicy, MaxValuePolicy).
+ *
+ * @return the evaluatorType value.
+ */
+ public PolicyEvaluatorType evaluatorType() {
+ return this.evaluatorType;
+ }
+
+ /**
+ * Set the evaluatorType property: The evaluator type of the policy (i.e. AllowedValuesPolicy, MaxValuePolicy).
+ *
+ * @param evaluatorType the evaluatorType value to set.
+ * @return the PolicyInner object itself.
+ */
+ public PolicyInner withEvaluatorType(PolicyEvaluatorType evaluatorType) {
+ this.evaluatorType = evaluatorType;
+ return this;
+ }
+
+ /**
+ * Get the createdDate property: The creation date of the policy.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public PolicyInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public PolicyInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/RdpConnectionInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/RdpConnectionInner.java
new file mode 100644
index 000000000000..7ad0a5d049ea
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/RdpConnectionInner.java
@@ -0,0 +1,50 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Represents a .rdp file. */
+@Fluent
+public final class RdpConnectionInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(RdpConnectionInner.class);
+
+ /*
+ * The contents of the .rdp file
+ */
+ @JsonProperty(value = "contents")
+ private String contents;
+
+ /**
+ * Get the contents property: The contents of the .rdp file.
+ *
+ * @return the contents value.
+ */
+ public String contents() {
+ return this.contents;
+ }
+
+ /**
+ * Set the contents property: The contents of the .rdp file.
+ *
+ * @param contents the contents value to set.
+ * @return the RdpConnectionInner object itself.
+ */
+ public RdpConnectionInner withContents(String contents) {
+ this.contents = contents;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ScheduleInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ScheduleInner.java
new file mode 100644
index 000000000000..21f71b94a9d1
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ScheduleInner.java
@@ -0,0 +1,322 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.DayDetails;
+import com.azure.resourcemanager.devtestlabs.models.EnableStatus;
+import com.azure.resourcemanager.devtestlabs.models.HourDetails;
+import com.azure.resourcemanager.devtestlabs.models.NotificationSettings;
+import com.azure.resourcemanager.devtestlabs.models.WeekDetails;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** A schedule. */
+@JsonFlatten
+@Fluent
+public class ScheduleInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ScheduleInner.class);
+
+ /*
+ * The status of the schedule (i.e. Enabled, Disabled)
+ */
+ @JsonProperty(value = "properties.status")
+ private EnableStatus status;
+
+ /*
+ * The task type of the schedule (e.g. LabVmsShutdownTask, LabVmAutoStart).
+ */
+ @JsonProperty(value = "properties.taskType")
+ private String taskType;
+
+ /*
+ * If the schedule will occur only some days of the week, specify the
+ * weekly recurrence.
+ */
+ @JsonProperty(value = "properties.weeklyRecurrence")
+ private WeekDetails weeklyRecurrence;
+
+ /*
+ * If the schedule will occur once each day of the week, specify the daily
+ * recurrence.
+ */
+ @JsonProperty(value = "properties.dailyRecurrence")
+ private DayDetails dailyRecurrence;
+
+ /*
+ * If the schedule will occur multiple times a day, specify the hourly
+ * recurrence.
+ */
+ @JsonProperty(value = "properties.hourlyRecurrence")
+ private HourDetails hourlyRecurrence;
+
+ /*
+ * The time zone ID (e.g. Pacific Standard time).
+ */
+ @JsonProperty(value = "properties.timeZoneId")
+ private String timeZoneId;
+
+ /*
+ * Notification settings.
+ */
+ @JsonProperty(value = "properties.notificationSettings")
+ private NotificationSettings notificationSettings;
+
+ /*
+ * The creation date of the schedule.
+ */
+ @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime createdDate;
+
+ /*
+ * The resource ID to which the schedule belongs
+ */
+ @JsonProperty(value = "properties.targetResourceId")
+ private String targetResourceId;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the status property: The status of the schedule (i.e. Enabled, Disabled).
+ *
+ * @return the status value.
+ */
+ public EnableStatus status() {
+ return this.status;
+ }
+
+ /**
+ * Set the status property: The status of the schedule (i.e. Enabled, Disabled).
+ *
+ * @param status the status value to set.
+ * @return the ScheduleInner object itself.
+ */
+ public ScheduleInner withStatus(EnableStatus status) {
+ this.status = status;
+ return this;
+ }
+
+ /**
+ * Get the taskType property: The task type of the schedule (e.g. LabVmsShutdownTask, LabVmAutoStart).
+ *
+ * @return the taskType value.
+ */
+ public String taskType() {
+ return this.taskType;
+ }
+
+ /**
+ * Set the taskType property: The task type of the schedule (e.g. LabVmsShutdownTask, LabVmAutoStart).
+ *
+ * @param taskType the taskType value to set.
+ * @return the ScheduleInner object itself.
+ */
+ public ScheduleInner withTaskType(String taskType) {
+ this.taskType = taskType;
+ return this;
+ }
+
+ /**
+ * Get the weeklyRecurrence property: If the schedule will occur only some days of the week, specify the weekly
+ * recurrence.
+ *
+ * @return the weeklyRecurrence value.
+ */
+ public WeekDetails weeklyRecurrence() {
+ return this.weeklyRecurrence;
+ }
+
+ /**
+ * Set the weeklyRecurrence property: If the schedule will occur only some days of the week, specify the weekly
+ * recurrence.
+ *
+ * @param weeklyRecurrence the weeklyRecurrence value to set.
+ * @return the ScheduleInner object itself.
+ */
+ public ScheduleInner withWeeklyRecurrence(WeekDetails weeklyRecurrence) {
+ this.weeklyRecurrence = weeklyRecurrence;
+ return this;
+ }
+
+ /**
+ * Get the dailyRecurrence property: If the schedule will occur once each day of the week, specify the daily
+ * recurrence.
+ *
+ * @return the dailyRecurrence value.
+ */
+ public DayDetails dailyRecurrence() {
+ return this.dailyRecurrence;
+ }
+
+ /**
+ * Set the dailyRecurrence property: If the schedule will occur once each day of the week, specify the daily
+ * recurrence.
+ *
+ * @param dailyRecurrence the dailyRecurrence value to set.
+ * @return the ScheduleInner object itself.
+ */
+ public ScheduleInner withDailyRecurrence(DayDetails dailyRecurrence) {
+ this.dailyRecurrence = dailyRecurrence;
+ return this;
+ }
+
+ /**
+ * Get the hourlyRecurrence property: If the schedule will occur multiple times a day, specify the hourly
+ * recurrence.
+ *
+ * @return the hourlyRecurrence value.
+ */
+ public HourDetails hourlyRecurrence() {
+ return this.hourlyRecurrence;
+ }
+
+ /**
+ * Set the hourlyRecurrence property: If the schedule will occur multiple times a day, specify the hourly
+ * recurrence.
+ *
+ * @param hourlyRecurrence the hourlyRecurrence value to set.
+ * @return the ScheduleInner object itself.
+ */
+ public ScheduleInner withHourlyRecurrence(HourDetails hourlyRecurrence) {
+ this.hourlyRecurrence = hourlyRecurrence;
+ return this;
+ }
+
+ /**
+ * Get the timeZoneId property: The time zone ID (e.g. Pacific Standard time).
+ *
+ * @return the timeZoneId value.
+ */
+ public String timeZoneId() {
+ return this.timeZoneId;
+ }
+
+ /**
+ * Set the timeZoneId property: The time zone ID (e.g. Pacific Standard time).
+ *
+ * @param timeZoneId the timeZoneId value to set.
+ * @return the ScheduleInner object itself.
+ */
+ public ScheduleInner withTimeZoneId(String timeZoneId) {
+ this.timeZoneId = timeZoneId;
+ return this;
+ }
+
+ /**
+ * Get the notificationSettings property: Notification settings.
+ *
+ * @return the notificationSettings value.
+ */
+ public NotificationSettings notificationSettings() {
+ return this.notificationSettings;
+ }
+
+ /**
+ * Set the notificationSettings property: Notification settings.
+ *
+ * @param notificationSettings the notificationSettings value to set.
+ * @return the ScheduleInner object itself.
+ */
+ public ScheduleInner withNotificationSettings(NotificationSettings notificationSettings) {
+ this.notificationSettings = notificationSettings;
+ return this;
+ }
+
+ /**
+ * Get the createdDate property: The creation date of the schedule.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Get the targetResourceId property: The resource ID to which the schedule belongs.
+ *
+ * @return the targetResourceId value.
+ */
+ public String targetResourceId() {
+ return this.targetResourceId;
+ }
+
+ /**
+ * Set the targetResourceId property: The resource ID to which the schedule belongs.
+ *
+ * @param targetResourceId the targetResourceId value to set.
+ * @return the ScheduleInner object itself.
+ */
+ public ScheduleInner withTargetResourceId(String targetResourceId) {
+ this.targetResourceId = targetResourceId;
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ScheduleInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ScheduleInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (weeklyRecurrence() != null) {
+ weeklyRecurrence().validate();
+ }
+ if (dailyRecurrence() != null) {
+ dailyRecurrence().validate();
+ }
+ if (hourlyRecurrence() != null) {
+ hourlyRecurrence().validate();
+ }
+ if (notificationSettings() != null) {
+ notificationSettings().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/SecretInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/SecretInner.java
new file mode 100644
index 000000000000..3f6f0af07f97
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/SecretInner.java
@@ -0,0 +1,98 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** A secret. */
+@JsonFlatten
+@Fluent
+public class SecretInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(SecretInner.class);
+
+ /*
+ * The value of the secret for secret creation.
+ */
+ @JsonProperty(value = "properties.value")
+ private String value;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the value property: The value of the secret for secret creation.
+ *
+ * @return the value value.
+ */
+ public String value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value property: The value of the secret for secret creation.
+ *
+ * @param value the value value to set.
+ * @return the SecretInner object itself.
+ */
+ public SecretInner withValue(String value) {
+ this.value = value;
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public SecretInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public SecretInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ServiceFabricInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ServiceFabricInner.java
new file mode 100644
index 000000000000..fcc1dbed870a
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ServiceFabricInner.java
@@ -0,0 +1,145 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** A Service Fabric. */
+@JsonFlatten
+@Fluent
+public class ServiceFabricInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ServiceFabricInner.class);
+
+ /*
+ * The backing service fabric resource's id
+ */
+ @JsonProperty(value = "properties.externalServiceFabricId")
+ private String externalServiceFabricId;
+
+ /*
+ * The resource id of the environment under which the service fabric
+ * resource is present
+ */
+ @JsonProperty(value = "properties.environmentId")
+ private String environmentId;
+
+ /*
+ * The applicable schedule for the virtual machine.
+ */
+ @JsonProperty(value = "properties.applicableSchedule", access = JsonProperty.Access.WRITE_ONLY)
+ private ApplicableScheduleInner applicableSchedule;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the externalServiceFabricId property: The backing service fabric resource's id.
+ *
+ * @return the externalServiceFabricId value.
+ */
+ public String externalServiceFabricId() {
+ return this.externalServiceFabricId;
+ }
+
+ /**
+ * Set the externalServiceFabricId property: The backing service fabric resource's id.
+ *
+ * @param externalServiceFabricId the externalServiceFabricId value to set.
+ * @return the ServiceFabricInner object itself.
+ */
+ public ServiceFabricInner withExternalServiceFabricId(String externalServiceFabricId) {
+ this.externalServiceFabricId = externalServiceFabricId;
+ return this;
+ }
+
+ /**
+ * Get the environmentId property: The resource id of the environment under which the service fabric resource is
+ * present.
+ *
+ * @return the environmentId value.
+ */
+ public String environmentId() {
+ return this.environmentId;
+ }
+
+ /**
+ * Set the environmentId property: The resource id of the environment under which the service fabric resource is
+ * present.
+ *
+ * @param environmentId the environmentId value to set.
+ * @return the ServiceFabricInner object itself.
+ */
+ public ServiceFabricInner withEnvironmentId(String environmentId) {
+ this.environmentId = environmentId;
+ return this;
+ }
+
+ /**
+ * Get the applicableSchedule property: The applicable schedule for the virtual machine.
+ *
+ * @return the applicableSchedule value.
+ */
+ public ApplicableScheduleInner applicableSchedule() {
+ return this.applicableSchedule;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ServiceFabricInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ServiceFabricInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (applicableSchedule() != null) {
+ applicableSchedule().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ServiceRunnerInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ServiceRunnerInner.java
new file mode 100644
index 000000000000..3502af945969
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/ServiceRunnerInner.java
@@ -0,0 +1,70 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.IdentityProperties;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** A container for a managed identity to execute DevTest lab services. */
+@Fluent
+public final class ServiceRunnerInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ServiceRunnerInner.class);
+
+ /*
+ * The identity of the resource.
+ */
+ @JsonProperty(value = "identity")
+ private IdentityProperties identity;
+
+ /**
+ * Get the identity property: The identity of the resource.
+ *
+ * @return the identity value.
+ */
+ public IdentityProperties identity() {
+ return this.identity;
+ }
+
+ /**
+ * Set the identity property: The identity of the resource.
+ *
+ * @param identity the identity value to set.
+ * @return the ServiceRunnerInner object itself.
+ */
+ public ServiceRunnerInner withIdentity(IdentityProperties identity) {
+ this.identity = identity;
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ServiceRunnerInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public ServiceRunnerInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (identity() != null) {
+ identity().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/UserInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/UserInner.java
new file mode 100644
index 000000000000..a502dbe76746
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/UserInner.java
@@ -0,0 +1,148 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.UserIdentity;
+import com.azure.resourcemanager.devtestlabs.models.UserSecretStore;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** Profile of a lab user. */
+@JsonFlatten
+@Fluent
+public class UserInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(UserInner.class);
+
+ /*
+ * The identity of the user.
+ */
+ @JsonProperty(value = "properties.identity")
+ private UserIdentity identity;
+
+ /*
+ * The secret store of the user.
+ */
+ @JsonProperty(value = "properties.secretStore")
+ private UserSecretStore secretStore;
+
+ /*
+ * The creation date of the user profile.
+ */
+ @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime createdDate;
+
+ /*
+ * The provisioning status of the resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /*
+ * The unique immutable identifier of a resource (Guid).
+ */
+ @JsonProperty(value = "properties.uniqueIdentifier", access = JsonProperty.Access.WRITE_ONLY)
+ private String uniqueIdentifier;
+
+ /**
+ * Get the identity property: The identity of the user.
+ *
+ * @return the identity value.
+ */
+ public UserIdentity identity() {
+ return this.identity;
+ }
+
+ /**
+ * Set the identity property: The identity of the user.
+ *
+ * @param identity the identity value to set.
+ * @return the UserInner object itself.
+ */
+ public UserInner withIdentity(UserIdentity identity) {
+ this.identity = identity;
+ return this;
+ }
+
+ /**
+ * Get the secretStore property: The secret store of the user.
+ *
+ * @return the secretStore value.
+ */
+ public UserSecretStore secretStore() {
+ return this.secretStore;
+ }
+
+ /**
+ * Set the secretStore property: The secret store of the user.
+ *
+ * @param secretStore the secretStore value to set.
+ * @return the UserInner object itself.
+ */
+ public UserInner withSecretStore(UserSecretStore secretStore) {
+ this.secretStore = secretStore;
+ return this;
+ }
+
+ /**
+ * Get the createdDate property: The creation date of the user profile.
+ *
+ * @return the createdDate value.
+ */
+ public OffsetDateTime createdDate() {
+ return this.createdDate;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning status of the resource.
+ *
+ * @return the provisioningState value.
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+ *
+ * @return the uniqueIdentifier value.
+ */
+ public String uniqueIdentifier() {
+ return this.uniqueIdentifier;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public UserInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public UserInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (identity() != null) {
+ identity().validate();
+ }
+ if (secretStore() != null) {
+ secretStore().validate();
+ }
+ }
+}
diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/VirtualNetworkInner.java b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/VirtualNetworkInner.java
new file mode 100644
index 000000000000..80f7fd88eee8
--- /dev/null
+++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/src/main/java/com/azure/resourcemanager/devtestlabs/fluent/models/VirtualNetworkInner.java
@@ -0,0 +1,220 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.devtestlabs.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.Resource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.devtestlabs.models.ExternalSubnet;
+import com.azure.resourcemanager.devtestlabs.models.Subnet;
+import com.azure.resourcemanager.devtestlabs.models.SubnetOverride;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** A virtual network. */
+@JsonFlatten
+@Fluent
+public class VirtualNetworkInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(VirtualNetworkInner.class);
+
+ /*
+ * The allowed subnets of the virtual network.
+ */
+ @JsonProperty(value = "properties.allowedSubnets")
+ private List allowedSubnets;
+
+ /*
+ * The description of the virtual network.
+ */
+ @JsonProperty(value = "properties.description")
+ private String description;
+
+ /*
+ * The Microsoft.Network resource identifier of the virtual network.
+ */
+ @JsonProperty(value = "properties.externalProviderResourceId")
+ private String externalProviderResourceId;
+
+ /*
+ * The external subnet properties.
+ */
+ @JsonProperty(value = "properties.externalSubnets", access = JsonProperty.Access.WRITE_ONLY)
+ private List