diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt
index 342f84b97c160..6daa399bdec6a 100644
--- a/eng/versioning/version_client.txt
+++ b/eng/versioning/version_client.txt
@@ -300,6 +300,7 @@ com.azure.resourcemanager:azure-resourcemanager-maps;1.0.0-beta.1;1.0.0-beta.2
com.azure.resourcemanager:azure-resourcemanager-botservice;1.0.0-beta.1;1.0.0-beta.2
com.azure.resourcemanager:azure-resourcemanager-recoveryservicesbackup;1.0.0-beta.1;1.0.0-beta.2
com.azure.resourcemanager:azure-resourcemanager-deviceprovisioningservices;1.0.0;1.1.0-beta.1
+com.azure.resourcemanager:azure-resourcemanager-storage-generated;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/sdk/storage/azure-resourcemanager-storage-generated/CHANGELOG.md b/sdk/storage/azure-resourcemanager-storage-generated/CHANGELOG.md
new file mode 100644
index 0000000000000..5cb9c220136ef
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/CHANGELOG.md
@@ -0,0 +1,5 @@
+# Release History
+
+## 1.0.0-beta.1 (2021-07-02)
+
+- Azure Resource Manager Storage client library for Java. This package contains Microsoft Azure SDK for Storage Management SDK. The Azure Storage Management API. Package tag package-2021-04. 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/storage/azure-resourcemanager-storage-generated/README.md b/sdk/storage/azure-resourcemanager-storage-generated/README.md
new file mode 100644
index 0000000000000..534de02386d6a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/README.md
@@ -0,0 +1,101 @@
+# Azure Resource Manager Storage client library for Java
+
+Azure Resource Manager Storage client library for Java.
+
+This package contains Microsoft Azure SDK for Storage Management SDK. The Azure Storage Management API. Package tag package-2021-04. 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-storage-generated;current})
+```xml
+
+ com.azure.resourcemanager
+ azure-resourcemanager-storage-generated
+ 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();
+StorageManager manager = StorageManager
+ .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/storage/azure-resourcemanager-storage-generated/pom.xml b/sdk/storage/azure-resourcemanager-storage-generated/pom.xml
new file mode 100644
index 0000000000000..4fd71a523a4c5
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/pom.xml
@@ -0,0 +1,86 @@
+
+ 4.0.0
+
+ com.azure
+ azure-client-sdk-parent
+ 1.7.0
+ ../../parents/azure-client-sdk-parent
+
+
+ com.azure.resourcemanager
+ azure-resourcemanager-storage-generated
+ 1.0.0-beta.1
+ jar
+
+ Microsoft Azure SDK for Storage Management
+ This package contains Microsoft Azure SDK for Storage Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. The Azure Storage Management API. Package tag package-2021-04.
+ 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.18.0
+
+
+ com.azure
+ azure-core-management
+ 1.3.1
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.5
+
+ true
+
+
+
+ org.revapi
+ revapi-maven-plugin
+ 0.11.2
+
+
+
+ -
+
java.method.addedToInterface
+
+ -
+ true
+
.*
+ com\.azure\.resourcemanager(\.[^.]+)+\.fluent(\.[^.]+)*
+
+
+
+
+
+
+
+
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/StorageManager.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/StorageManager.java
new file mode 100644
index 0000000000000..e2105826bd957
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/StorageManager.java
@@ -0,0 +1,446 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated;
+
+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.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.http.policy.ArmChallengeAuthenticationPolicy;
+import com.azure.core.management.profile.AzureProfile;
+import com.azure.core.util.Configuration;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.fluent.StorageManagementClient;
+import com.azure.resourcemanager.storage.generated.implementation.BlobContainersImpl;
+import com.azure.resourcemanager.storage.generated.implementation.BlobInventoryPoliciesImpl;
+import com.azure.resourcemanager.storage.generated.implementation.BlobServicesImpl;
+import com.azure.resourcemanager.storage.generated.implementation.DeletedAccountsImpl;
+import com.azure.resourcemanager.storage.generated.implementation.EncryptionScopesImpl;
+import com.azure.resourcemanager.storage.generated.implementation.FileServicesImpl;
+import com.azure.resourcemanager.storage.generated.implementation.FileSharesImpl;
+import com.azure.resourcemanager.storage.generated.implementation.ManagementPoliciesImpl;
+import com.azure.resourcemanager.storage.generated.implementation.ObjectReplicationPoliciesOperationsImpl;
+import com.azure.resourcemanager.storage.generated.implementation.OperationsImpl;
+import com.azure.resourcemanager.storage.generated.implementation.PrivateEndpointConnectionsImpl;
+import com.azure.resourcemanager.storage.generated.implementation.PrivateLinkResourcesImpl;
+import com.azure.resourcemanager.storage.generated.implementation.QueueServicesImpl;
+import com.azure.resourcemanager.storage.generated.implementation.QueuesImpl;
+import com.azure.resourcemanager.storage.generated.implementation.SkusImpl;
+import com.azure.resourcemanager.storage.generated.implementation.StorageAccountsImpl;
+import com.azure.resourcemanager.storage.generated.implementation.StorageManagementClientBuilder;
+import com.azure.resourcemanager.storage.generated.implementation.TableServicesImpl;
+import com.azure.resourcemanager.storage.generated.implementation.TablesImpl;
+import com.azure.resourcemanager.storage.generated.implementation.UsagesImpl;
+import com.azure.resourcemanager.storage.generated.models.BlobContainers;
+import com.azure.resourcemanager.storage.generated.models.BlobInventoryPolicies;
+import com.azure.resourcemanager.storage.generated.models.BlobServices;
+import com.azure.resourcemanager.storage.generated.models.DeletedAccounts;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopes;
+import com.azure.resourcemanager.storage.generated.models.FileServices;
+import com.azure.resourcemanager.storage.generated.models.FileShares;
+import com.azure.resourcemanager.storage.generated.models.ManagementPolicies;
+import com.azure.resourcemanager.storage.generated.models.ObjectReplicationPoliciesOperations;
+import com.azure.resourcemanager.storage.generated.models.Operations;
+import com.azure.resourcemanager.storage.generated.models.PrivateEndpointConnections;
+import com.azure.resourcemanager.storage.generated.models.PrivateLinkResources;
+import com.azure.resourcemanager.storage.generated.models.QueueServices;
+import com.azure.resourcemanager.storage.generated.models.Queues;
+import com.azure.resourcemanager.storage.generated.models.Skus;
+import com.azure.resourcemanager.storage.generated.models.StorageAccounts;
+import com.azure.resourcemanager.storage.generated.models.TableServices;
+import com.azure.resourcemanager.storage.generated.models.Tables;
+import com.azure.resourcemanager.storage.generated.models.Usages;
+import java.time.Duration;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/** Entry point to StorageManager. The Azure Storage Management API. */
+public final class StorageManager {
+ private Operations operations;
+
+ private Skus skus;
+
+ private StorageAccounts storageAccounts;
+
+ private DeletedAccounts deletedAccounts;
+
+ private Usages usages;
+
+ private ManagementPolicies managementPolicies;
+
+ private BlobInventoryPolicies blobInventoryPolicies;
+
+ private PrivateEndpointConnections privateEndpointConnections;
+
+ private PrivateLinkResources privateLinkResources;
+
+ private ObjectReplicationPoliciesOperations objectReplicationPoliciesOperations;
+
+ private EncryptionScopes encryptionScopes;
+
+ private BlobServices blobServices;
+
+ private BlobContainers blobContainers;
+
+ private FileServices fileServices;
+
+ private FileShares fileShares;
+
+ private QueueServices queueServices;
+
+ private Queues queues;
+
+ private TableServices tableServices;
+
+ private Tables tables;
+
+ private final StorageManagementClient clientObject;
+
+ private StorageManager(HttpPipeline httpPipeline, AzureProfile profile, Duration defaultPollInterval) {
+ Objects.requireNonNull(httpPipeline, "'httpPipeline' cannot be null.");
+ Objects.requireNonNull(profile, "'profile' cannot be null.");
+ this.clientObject =
+ new StorageManagementClientBuilder()
+ .pipeline(httpPipeline)
+ .endpoint(profile.getEnvironment().getResourceManagerEndpoint())
+ .subscriptionId(profile.getSubscriptionId())
+ .defaultPollInterval(defaultPollInterval)
+ .buildClient();
+ }
+
+ /**
+ * Creates an instance of Storage service API entry point.
+ *
+ * @param credential the credential to use.
+ * @param profile the Azure profile for client.
+ * @return the Storage service API instance.
+ */
+ public static StorageManager 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 StorageManager with optional configuration.
+ *
+ * @return the Configurable instance allowing configurations.
+ */
+ public static Configurable configure() {
+ return new StorageManager.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 final List scopes = 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;
+ }
+
+ /**
+ * Adds the scope to permission sets.
+ *
+ * @param scope the scope.
+ * @return the configurable object itself.
+ */
+ public Configurable withScope(String scope) {
+ this.scopes.add(Objects.requireNonNull(scope, "'scope' 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 Storage service API entry point.
+ *
+ * @param credential the credential to use.
+ * @param profile the Azure profile for client.
+ * @return the Storage service API instance.
+ */
+ public StorageManager 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.storage.generated")
+ .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 (scopes.isEmpty()) {
+ scopes.add(profile.getEnvironment().getManagementEndpoint() + "/.default");
+ }
+ 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 ArmChallengeAuthenticationPolicy(credential, scopes.toArray(new String[0])));
+ policies.addAll(this.policies);
+ HttpPolicyProviders.addAfterRetryPolicies(policies);
+ policies.add(new HttpLoggingPolicy(httpLogOptions));
+ HttpPipeline httpPipeline =
+ new HttpPipelineBuilder()
+ .httpClient(httpClient)
+ .policies(policies.toArray(new HttpPipelinePolicy[0]))
+ .build();
+ return new StorageManager(httpPipeline, profile, defaultPollInterval);
+ }
+ }
+
+ /** @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 Skus. */
+ public Skus skus() {
+ if (this.skus == null) {
+ this.skus = new SkusImpl(clientObject.getSkus(), this);
+ }
+ return skus;
+ }
+
+ /** @return Resource collection API of StorageAccounts. */
+ public StorageAccounts storageAccounts() {
+ if (this.storageAccounts == null) {
+ this.storageAccounts = new StorageAccountsImpl(clientObject.getStorageAccounts(), this);
+ }
+ return storageAccounts;
+ }
+
+ /** @return Resource collection API of DeletedAccounts. */
+ public DeletedAccounts deletedAccounts() {
+ if (this.deletedAccounts == null) {
+ this.deletedAccounts = new DeletedAccountsImpl(clientObject.getDeletedAccounts(), this);
+ }
+ return deletedAccounts;
+ }
+
+ /** @return Resource collection API of Usages. */
+ public Usages usages() {
+ if (this.usages == null) {
+ this.usages = new UsagesImpl(clientObject.getUsages(), this);
+ }
+ return usages;
+ }
+
+ /** @return Resource collection API of ManagementPolicies. */
+ public ManagementPolicies managementPolicies() {
+ if (this.managementPolicies == null) {
+ this.managementPolicies = new ManagementPoliciesImpl(clientObject.getManagementPolicies(), this);
+ }
+ return managementPolicies;
+ }
+
+ /** @return Resource collection API of BlobInventoryPolicies. */
+ public BlobInventoryPolicies blobInventoryPolicies() {
+ if (this.blobInventoryPolicies == null) {
+ this.blobInventoryPolicies = new BlobInventoryPoliciesImpl(clientObject.getBlobInventoryPolicies(), this);
+ }
+ return blobInventoryPolicies;
+ }
+
+ /** @return Resource collection API of PrivateEndpointConnections. */
+ public PrivateEndpointConnections privateEndpointConnections() {
+ if (this.privateEndpointConnections == null) {
+ this.privateEndpointConnections =
+ new PrivateEndpointConnectionsImpl(clientObject.getPrivateEndpointConnections(), this);
+ }
+ return privateEndpointConnections;
+ }
+
+ /** @return Resource collection API of PrivateLinkResources. */
+ public PrivateLinkResources privateLinkResources() {
+ if (this.privateLinkResources == null) {
+ this.privateLinkResources = new PrivateLinkResourcesImpl(clientObject.getPrivateLinkResources(), this);
+ }
+ return privateLinkResources;
+ }
+
+ /** @return Resource collection API of ObjectReplicationPoliciesOperations. */
+ public ObjectReplicationPoliciesOperations objectReplicationPoliciesOperations() {
+ if (this.objectReplicationPoliciesOperations == null) {
+ this.objectReplicationPoliciesOperations =
+ new ObjectReplicationPoliciesOperationsImpl(
+ clientObject.getObjectReplicationPoliciesOperations(), this);
+ }
+ return objectReplicationPoliciesOperations;
+ }
+
+ /** @return Resource collection API of EncryptionScopes. */
+ public EncryptionScopes encryptionScopes() {
+ if (this.encryptionScopes == null) {
+ this.encryptionScopes = new EncryptionScopesImpl(clientObject.getEncryptionScopes(), this);
+ }
+ return encryptionScopes;
+ }
+
+ /** @return Resource collection API of BlobServices. */
+ public BlobServices blobServices() {
+ if (this.blobServices == null) {
+ this.blobServices = new BlobServicesImpl(clientObject.getBlobServices(), this);
+ }
+ return blobServices;
+ }
+
+ /** @return Resource collection API of BlobContainers. */
+ public BlobContainers blobContainers() {
+ if (this.blobContainers == null) {
+ this.blobContainers = new BlobContainersImpl(clientObject.getBlobContainers(), this);
+ }
+ return blobContainers;
+ }
+
+ /** @return Resource collection API of FileServices. */
+ public FileServices fileServices() {
+ if (this.fileServices == null) {
+ this.fileServices = new FileServicesImpl(clientObject.getFileServices(), this);
+ }
+ return fileServices;
+ }
+
+ /** @return Resource collection API of FileShares. */
+ public FileShares fileShares() {
+ if (this.fileShares == null) {
+ this.fileShares = new FileSharesImpl(clientObject.getFileShares(), this);
+ }
+ return fileShares;
+ }
+
+ /** @return Resource collection API of QueueServices. */
+ public QueueServices queueServices() {
+ if (this.queueServices == null) {
+ this.queueServices = new QueueServicesImpl(clientObject.getQueueServices(), this);
+ }
+ return queueServices;
+ }
+
+ /** @return Resource collection API of Queues. */
+ public Queues queues() {
+ if (this.queues == null) {
+ this.queues = new QueuesImpl(clientObject.getQueues(), this);
+ }
+ return queues;
+ }
+
+ /** @return Resource collection API of TableServices. */
+ public TableServices tableServices() {
+ if (this.tableServices == null) {
+ this.tableServices = new TableServicesImpl(clientObject.getTableServices(), this);
+ }
+ return tableServices;
+ }
+
+ /** @return Resource collection API of Tables. */
+ public Tables tables() {
+ if (this.tables == null) {
+ this.tables = new TablesImpl(clientObject.getTables(), this);
+ }
+ return tables;
+ }
+
+ /**
+ * @return Wrapped service client StorageManagementClient providing direct access to the underlying auto-generated
+ * API implementation, based on Azure REST API.
+ */
+ public StorageManagementClient serviceClient() {
+ return this.clientObject;
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobContainersClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobContainersClient.java
new file mode 100644
index 0000000000000..aecd82c427c2d
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobContainersClient.java
@@ -0,0 +1,692 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.BlobContainerInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ImmutabilityPolicyInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LeaseContainerResponseInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LegalHoldInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ListContainerItemInner;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersCreateOrUpdateImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersDeleteImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersExtendImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersGetImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersLockImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.LeaseContainerRequest;
+import com.azure.resourcemanager.storage.generated.models.ListContainersInclude;
+
+/** An instance of this class provides access to all the operations defined in BlobContainersClient. */
+public interface BlobContainersClient {
+ /**
+ * Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
+ * token.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
+ * token.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional. Specified maximum number of containers that can be included in the list.
+ * @param filter Optional. When specified, only container names starting with the filter will be listed.
+ * @param include Optional, used to include the properties for soft deleted blob containers.
+ * @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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include,
+ Context context);
+
+ /**
+ * Creates a new container under the specified account as described by request body. The container resource includes
+ * metadata and properties for that container. It does not include a list of the blobs contained by the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties of the blob container to create.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainerInner create(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer);
+
+ /**
+ * Creates a new container under the specified account as described by request body. The container resource includes
+ * metadata and properties for that container. It does not include a list of the blobs contained by the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties of the blob container to create.
+ * @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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ BlobContainerInner blobContainer,
+ Context context);
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be
+ * unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties to update for the blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainerInner update(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer);
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be
+ * unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties to update for the blob container.
+ * @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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ BlobContainerInner blobContainer,
+ Context context);
+
+ /**
+ * Gets properties of a specified container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 a specified container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainerInner get(String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * Gets properties of a specified container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @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 a specified container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String accountName, String containerName, Context context);
+
+ /**
+ * Deletes specified container under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 accountName, String containerName);
+
+ /**
+ * Deletes specified container under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @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 accountName, String containerName, Context context);
+
+ /**
+ * Sets legal hold tags. Setting the same tag results in an idempotent operation. SetLegalHold follows an append
+ * pattern and does not clear out the existing tags that are not specified in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be set to a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LegalHoldInner setLegalHold(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold);
+
+ /**
+ * Sets legal hold tags. Setting the same tag results in an idempotent operation. SetLegalHold follows an append
+ * pattern and does not clear out the existing tags that are not specified in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be set to a blob container.
+ * @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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response setLegalHoldWithResponse(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold, Context context);
+
+ /**
+ * Clears legal hold tags. Clearing the same or non-existent tag results in an idempotent operation. ClearLegalHold
+ * clears out only the specified tags in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be clear from a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LegalHoldInner clearLegalHold(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold);
+
+ /**
+ * Clears legal hold tags. Clearing the same or non-existent tag results in an idempotent operation. ClearLegalHold
+ * clears out only the specified tags in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be clear from a blob container.
+ * @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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response clearLegalHoldWithResponse(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold, Context context);
+
+ /**
+ * Creates or updates an unlocked immutability policy. ETag in If-Match is honored if given but not required for
+ * this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ImmutabilityPolicyInner createOrUpdateImmutabilityPolicy(
+ String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * Creates or updates an unlocked immutability policy. ETag in If-Match is honored if given but not required for
+ * this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param parameters The ImmutabilityPolicy Properties that will be created or updated to a blob container.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainersCreateOrUpdateImmutabilityPolicyResponse createOrUpdateImmutabilityPolicyWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ String ifMatch,
+ ImmutabilityPolicyInner parameters,
+ Context context);
+
+ /**
+ * Gets the existing immutability policy along with the corresponding ETag in response headers and body.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 existing immutability policy along with the corresponding ETag in response headers and body.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ImmutabilityPolicyInner getImmutabilityPolicy(String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * Gets the existing immutability policy along with the corresponding ETag in response headers and body.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @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 existing immutability policy along with the corresponding ETag in response headers and body.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainersGetImmutabilityPolicyResponse getImmutabilityPolicyWithResponse(
+ String resourceGroupName, String accountName, String containerName, String ifMatch, Context context);
+
+ /**
+ * Aborts an unlocked immutability policy. The response of delete has immutabilityPeriodSinceCreationInDays set to
+ * 0. ETag in If-Match is required for this operation. Deleting a locked immutability policy is not allowed, the
+ * only way is to delete the container after deleting all expired blobs inside the policy locked container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ImmutabilityPolicyInner deleteImmutabilityPolicy(
+ String resourceGroupName, String accountName, String containerName, String ifMatch);
+
+ /**
+ * Aborts an unlocked immutability policy. The response of delete has immutabilityPeriodSinceCreationInDays set to
+ * 0. ETag in If-Match is required for this operation. Deleting a locked immutability policy is not allowed, the
+ * only way is to delete the container after deleting all expired blobs inside the policy locked container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainersDeleteImmutabilityPolicyResponse deleteImmutabilityPolicyWithResponse(
+ String resourceGroupName, String accountName, String containerName, String ifMatch, Context context);
+
+ /**
+ * Sets the ImmutabilityPolicy to Locked state. The only action allowed on a Locked policy is
+ * ExtendImmutabilityPolicy action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ImmutabilityPolicyInner lockImmutabilityPolicy(
+ String resourceGroupName, String accountName, String containerName, String ifMatch);
+
+ /**
+ * Sets the ImmutabilityPolicy to Locked state. The only action allowed on a Locked policy is
+ * ExtendImmutabilityPolicy action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainersLockImmutabilityPolicyResponse lockImmutabilityPolicyWithResponse(
+ String resourceGroupName, String accountName, String containerName, String ifMatch, Context context);
+
+ /**
+ * Extends the immutabilityPeriodSinceCreationInDays of a locked immutabilityPolicy. The only action allowed on a
+ * Locked policy will be this action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ImmutabilityPolicyInner extendImmutabilityPolicy(
+ String resourceGroupName, String accountName, String containerName, String ifMatch);
+
+ /**
+ * Extends the immutabilityPeriodSinceCreationInDays of a locked immutabilityPolicy. The only action allowed on a
+ * Locked policy will be this action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param parameters The ImmutabilityPolicy Properties that will be extended for a blob container.
+ * @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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobContainersExtendImmutabilityPolicyResponse extendImmutabilityPolicyWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ String ifMatch,
+ ImmutabilityPolicyInner parameters,
+ Context context);
+
+ /**
+ * The Lease Container operation establishes and manages a lock on a container for delete operations. The lock
+ * duration can be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return lease Container response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LeaseContainerResponseInner lease(String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * The Lease Container operation establishes and manages a lock on a container for delete operations. The lock
+ * duration can be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param parameters Lease Container request body.
+ * @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 lease Container response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response leaseWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ LeaseContainerRequest parameters,
+ Context context);
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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> beginObjectLevelWorm(
+ String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @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> beginObjectLevelWorm(
+ String resourceGroupName, String accountName, String containerName, Context context);
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 objectLevelWorm(String resourceGroupName, String accountName, String containerName);
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @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 objectLevelWorm(String resourceGroupName, String accountName, String containerName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobInventoryPoliciesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobInventoryPoliciesClient.java
new file mode 100644
index 0000000000000..5ede340ec5162
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobInventoryPoliciesClient.java
@@ -0,0 +1,165 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.BlobInventoryPolicyInner;
+import com.azure.resourcemanager.storage.generated.models.BlobInventoryPolicyName;
+
+/** An instance of this class provides access to all the operations defined in BlobInventoryPoliciesClient. */
+public interface BlobInventoryPoliciesClient {
+ /**
+ * Gets the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 blob inventory policy associated with the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobInventoryPolicyInner get(
+ String resourceGroupName, String accountName, BlobInventoryPolicyName blobInventoryPolicyName);
+
+ /**
+ * Gets the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @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 blob inventory policy associated with the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String accountName, BlobInventoryPolicyName blobInventoryPolicyName, Context context);
+
+ /**
+ * Sets the blob inventory policy to the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @param properties The blob inventory policy set to a storage account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 storage account blob inventory policy.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobInventoryPolicyInner createOrUpdate(
+ String resourceGroupName,
+ String accountName,
+ BlobInventoryPolicyName blobInventoryPolicyName,
+ BlobInventoryPolicyInner properties);
+
+ /**
+ * Sets the blob inventory policy to the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @param properties The blob inventory policy set to a storage account.
+ * @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 storage account blob inventory policy.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName,
+ String accountName,
+ BlobInventoryPolicyName blobInventoryPolicyName,
+ BlobInventoryPolicyInner properties,
+ Context context);
+
+ /**
+ * Deletes the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 accountName, BlobInventoryPolicyName blobInventoryPolicyName);
+
+ /**
+ * Deletes the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param blobInventoryPolicyName The name of the storage account blob inventory policy. It should always be
+ * 'default'.
+ * @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 accountName, BlobInventoryPolicyName blobInventoryPolicyName, Context context);
+
+ /**
+ * Gets the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 blob inventory policy associated with the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Gets the blob inventory policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 blob inventory policy associated with the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobServicesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobServicesClient.java
new file mode 100644
index 0000000000000..2788b28cfee16
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/BlobServicesClient.java
@@ -0,0 +1,121 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.BlobServicePropertiesInner;
+
+/** An instance of this class provides access to all the operations defined in BlobServicesClient. */
+public interface BlobServicesClient {
+ /**
+ * List blob services of storage account. It returns a collection of one object named default.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * List blob services of storage account. It returns a collection of one object named default.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Sets the properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Blob service, including properties for Storage Analytics
+ * and CORS (Cross-Origin Resource Sharing) rules.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 properties of a storage account’s Blob service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobServicePropertiesInner setServiceProperties(
+ String resourceGroupName, String accountName, BlobServicePropertiesInner parameters);
+
+ /**
+ * Sets the properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Blob service, including properties for Storage Analytics
+ * and CORS (Cross-Origin Resource Sharing) rules.
+ * @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 properties of a storage account’s Blob service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response setServicePropertiesWithResponse(
+ String resourceGroupName, String accountName, BlobServicePropertiesInner parameters, Context context);
+
+ /**
+ * Gets the properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobServicePropertiesInner getServiceProperties(String resourceGroupName, String accountName);
+
+ /**
+ * Gets the properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of a storage account’s Blob service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getServicePropertiesWithResponse(
+ String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/DeletedAccountsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/DeletedAccountsClient.java
new file mode 100644
index 0000000000000..bb0e0c9a36d19
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/DeletedAccountsClient.java
@@ -0,0 +1,64 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.DeletedAccountInner;
+
+/** An instance of this class provides access to all the operations defined in DeletedAccountsClient. */
+public interface DeletedAccountsClient {
+ /**
+ * Lists deleted accounts under the 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 from the List Deleted Accounts operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Lists deleted accounts under the subscription.
+ *
+ * @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 from the List Deleted Accounts operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+
+ /**
+ * Get properties of specified deleted account resource.
+ *
+ * @param deletedAccountName Name of the deleted storage account.
+ * @param location The location of the deleted storage account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 specified deleted account resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ DeletedAccountInner get(String deletedAccountName, String location);
+
+ /**
+ * Get properties of specified deleted account resource.
+ *
+ * @param deletedAccountName Name of the deleted storage account.
+ * @param location The location of the deleted storage account.
+ * @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 specified deleted account resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(String deletedAccountName, String location, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/EncryptionScopesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/EncryptionScopesClient.java
new file mode 100644
index 0000000000000..f2b67015b3707
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/EncryptionScopesClient.java
@@ -0,0 +1,182 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.EncryptionScopeInner;
+
+/** An instance of this class provides access to all the operations defined in EncryptionScopesClient. */
+public interface EncryptionScopesClient {
+ /**
+ * Synchronously creates or updates an encryption scope under the specified storage account. If an encryption scope
+ * is already created and a subsequent request is issued with different properties, the encryption scope properties
+ * will be updated per the specified request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-)
+ * only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param encryptionScope Encryption scope properties to be used for the create or update.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 Encryption Scope resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ EncryptionScopeInner put(
+ String resourceGroupName, String accountName, String encryptionScopeName, EncryptionScopeInner encryptionScope);
+
+ /**
+ * Synchronously creates or updates an encryption scope under the specified storage account. If an encryption scope
+ * is already created and a subsequent request is issued with different properties, the encryption scope properties
+ * will be updated per the specified request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-)
+ * only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param encryptionScope Encryption scope properties to be used for the create or update.
+ * @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 Encryption Scope resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response putWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String encryptionScopeName,
+ EncryptionScopeInner encryptionScope,
+ Context context);
+
+ /**
+ * Update encryption scope properties as specified in the request body. Update fails if the specified encryption
+ * scope does not already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-)
+ * only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param encryptionScope Encryption scope properties to be used for the update.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 Encryption Scope resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ EncryptionScopeInner patch(
+ String resourceGroupName, String accountName, String encryptionScopeName, EncryptionScopeInner encryptionScope);
+
+ /**
+ * Update encryption scope properties as specified in the request body. Update fails if the specified encryption
+ * scope does not already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-)
+ * only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param encryptionScope Encryption scope properties to be used for the update.
+ * @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 Encryption Scope resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response patchWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String encryptionScopeName,
+ EncryptionScopeInner encryptionScope,
+ Context context);
+
+ /**
+ * Returns the properties for the specified encryption scope.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-)
+ * only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 Encryption Scope resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ EncryptionScopeInner get(String resourceGroupName, String accountName, String encryptionScopeName);
+
+ /**
+ * Returns the properties for the specified encryption scope.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param encryptionScopeName The name of the encryption scope within the specified storage account. Encryption
+ * scope names must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-)
+ * only. Every dash (-) character must be immediately preceded and followed by a letter or number.
+ * @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 Encryption Scope resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String accountName, String encryptionScopeName, Context context);
+
+ /**
+ * Lists all the encryption scopes available under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return list of encryption scopes requested, and if paging is required, a URL to the next page of encryption
+ * scopes.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Lists all the encryption scopes available under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list of encryption scopes requested, and if paging is required, a URL to the next page of encryption
+ * scopes.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileServicesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileServicesClient.java
new file mode 100644
index 0000000000000..54e1896c5ccbb
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileServicesClient.java
@@ -0,0 +1,117 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.FileServiceItemsInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.FileServicePropertiesInner;
+
+/** An instance of this class provides access to all the operations defined in FileServicesClient. */
+public interface FileServicesClient {
+ /**
+ * List all file services in storage accounts.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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)
+ FileServiceItemsInner list(String resourceGroupName, String accountName);
+
+ /**
+ * List all file services in storage accounts.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 listWithResponse(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Sets the properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of file services in storage accounts, including CORS (Cross-Origin Resource
+ * Sharing) rules.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 properties of File services in storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileServicePropertiesInner setServiceProperties(
+ String resourceGroupName, String accountName, FileServicePropertiesInner parameters);
+
+ /**
+ * Sets the properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of file services in storage accounts, including CORS (Cross-Origin Resource
+ * Sharing) rules.
+ * @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 properties of File services in storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response setServicePropertiesWithResponse(
+ String resourceGroupName, String accountName, FileServicePropertiesInner parameters, Context context);
+
+ /**
+ * Gets the properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing)
+ * rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileServicePropertiesInner getServiceProperties(String resourceGroupName, String accountName);
+
+ /**
+ * Gets the properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of file services in storage accounts, including CORS (Cross-Origin Resource Sharing)
+ * rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getServicePropertiesWithResponse(
+ String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileSharesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileSharesClient.java
new file mode 100644
index 0000000000000..2873968f6b1c8
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/FileSharesClient.java
@@ -0,0 +1,332 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.FileShareInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.FileShareItemInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LeaseShareResponseInner;
+import com.azure.resourcemanager.storage.generated.models.DeletedShare;
+import com.azure.resourcemanager.storage.generated.models.FileSharesLeaseResponse;
+import com.azure.resourcemanager.storage.generated.models.LeaseShareRequest;
+
+/** An instance of this class provides access to all the operations defined in FileSharesClient. */
+public interface FileSharesClient {
+ /**
+ * Lists all shares.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Lists all shares.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional. Specified maximum number of shares that can be included in the list.
+ * @param filter Optional. When specified, only share names starting with the filter will be listed.
+ * @param expand Optional, used to expand the properties within share's properties. Valid values are: deleted,
+ * snapshots. Should be passed as a string with delimiter ','.
+ * @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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ String expand,
+ Context context);
+
+ /**
+ * Creates a new share under the specified account as described by request body. The share resource includes
+ * metadata and properties for that share. It does not include a list of the files contained by the share.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param fileShare Properties of the file share to create.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 the file share, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileShareInner create(String resourceGroupName, String accountName, String shareName, FileShareInner fileShare);
+
+ /**
+ * Creates a new share under the specified account as described by request body. The share resource includes
+ * metadata and properties for that share. It does not include a list of the files contained by the share.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param fileShare Properties of the file share to create.
+ * @param expand Optional, used to expand the properties within share's properties. Valid values are: snapshots.
+ * Should be passed as a string with delimiter ','.
+ * @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 the file share, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String shareName,
+ FileShareInner fileShare,
+ String expand,
+ Context context);
+
+ /**
+ * Updates share properties as specified in request body. Properties not mentioned in the request will not be
+ * changed. Update fails if the specified share does not already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param fileShare Properties to update for the file share.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 the file share, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileShareInner update(String resourceGroupName, String accountName, String shareName, FileShareInner fileShare);
+
+ /**
+ * Updates share properties as specified in request body. Properties not mentioned in the request will not be
+ * changed. Update fails if the specified share does not already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param fileShare Properties to update for the file share.
+ * @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 the file share, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String accountName, String shareName, FileShareInner fileShare, Context context);
+
+ /**
+ * Gets properties of a specified share.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 a specified share.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileShareInner get(String resourceGroupName, String accountName, String shareName);
+
+ /**
+ * Gets properties of a specified share.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param expand Optional, used to expand the properties within share's properties. Valid values are: stats. Should
+ * be passed as a string with delimiter ','.
+ * @param xMsSnapshot Optional, used to retrieve properties of a snapshot.
+ * @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 a specified share.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String shareName,
+ String expand,
+ String xMsSnapshot,
+ Context context);
+
+ /**
+ * Deletes specified share under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 accountName, String shareName);
+
+ /**
+ * Deletes specified share under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param xMsSnapshot Optional, used to delete a snapshot.
+ * @param include Optional. Valid values are: snapshots, leased-snapshots, none. The default value is snapshots. For
+ * 'snapshots', the file share is deleted including all of its file share snapshots. If the file share contains
+ * leased-snapshots, the deletion fails. For 'leased-snapshots', the file share is deleted included all of its
+ * file share snapshots (leased/unleased). For 'none', the file share is deleted if it has no share snapshots.
+ * If the file share contains any snapshots (leased or unleased), the deletion fails.
+ * @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 accountName,
+ String shareName,
+ String xMsSnapshot,
+ String include,
+ Context context);
+
+ /**
+ * Restore a file share within a valid retention days if share soft delete is enabled.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param deletedShare The deleted share to be restored.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 restore(String resourceGroupName, String accountName, String shareName, DeletedShare deletedShare);
+
+ /**
+ * Restore a file share within a valid retention days if share soft delete is enabled.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param deletedShare The deleted share to be restored.
+ * @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 restoreWithResponse(
+ String resourceGroupName, String accountName, String shareName, DeletedShare deletedShare, Context context);
+
+ /**
+ * The Lease Share operation establishes and manages a lock on a share for delete operations. The lock duration can
+ * be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return lease Share response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ LeaseShareResponseInner lease(String resourceGroupName, String accountName, String shareName);
+
+ /**
+ * The Lease Share operation establishes and manages a lock on a share for delete operations. The lock duration can
+ * be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param shareName The name of the file share within the specified storage account. File share names must be
+ * between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every dash (-)
+ * character must be immediately preceded and followed by a letter or number.
+ * @param xMsSnapshot Optional. Specify the snapshot time to lease a snapshot.
+ * @param parameters Lease Share request body.
+ * @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 lease Share response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ FileSharesLeaseResponse leaseWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String shareName,
+ String xMsSnapshot,
+ LeaseShareRequest parameters,
+ Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ManagementPoliciesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ManagementPoliciesClient.java
new file mode 100644
index 0000000000000..ef106c0bca02e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ManagementPoliciesClient.java
@@ -0,0 +1,126 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.ManagementPolicyInner;
+import com.azure.resourcemanager.storage.generated.models.ManagementPolicyName;
+
+/** An instance of this class provides access to all the operations defined in ManagementPoliciesClient. */
+public interface ManagementPoliciesClient {
+ /**
+ * Gets the managementpolicy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 managementpolicy associated with the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ManagementPolicyInner get(String resourceGroupName, String accountName, ManagementPolicyName managementPolicyName);
+
+ /**
+ * Gets the managementpolicy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @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 managementpolicy associated with the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String accountName, ManagementPolicyName managementPolicyName, Context context);
+
+ /**
+ * Sets the managementpolicy to the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @param properties The ManagementPolicy set to a storage account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 Get Storage Account ManagementPolicies operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ManagementPolicyInner createOrUpdate(
+ String resourceGroupName,
+ String accountName,
+ ManagementPolicyName managementPolicyName,
+ ManagementPolicyInner properties);
+
+ /**
+ * Sets the managementpolicy to the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @param properties The ManagementPolicy set to a storage account.
+ * @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 Get Storage Account ManagementPolicies operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName,
+ String accountName,
+ ManagementPolicyName managementPolicyName,
+ ManagementPolicyInner properties,
+ Context context);
+
+ /**
+ * Deletes the managementpolicy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 accountName, ManagementPolicyName managementPolicyName);
+
+ /**
+ * Deletes the managementpolicy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param managementPolicyName The name of the Storage Account Management Policy. It should always be 'default'.
+ * @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 accountName, ManagementPolicyName managementPolicyName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ObjectReplicationPoliciesOperationsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ObjectReplicationPoliciesOperationsClient.java
new file mode 100644
index 0000000000000..2ee06cee654b3
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/ObjectReplicationPoliciesOperationsClient.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.storage.generated.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.storage.generated.fluent.models.ObjectReplicationPolicyInner;
+
+/**
+ * An instance of this class provides access to all the operations defined in ObjectReplicationPoliciesOperationsClient.
+ */
+public interface ObjectReplicationPoliciesOperationsClient {
+ /**
+ * List the object replication policies associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return list storage account object replication policies.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * List the object replication policies associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list storage account object replication policies.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Get the object replication policy of the storage account by policy ID.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 object replication policy of the storage account by policy ID.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ObjectReplicationPolicyInner get(String resourceGroupName, String accountName, String objectReplicationPolicyId);
+
+ /**
+ * Get the object replication policy of the storage account by policy ID.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @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 object replication policy of the storage account by policy ID.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String accountName, String objectReplicationPolicyId, Context context);
+
+ /**
+ * Create or update the object replication policy of the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @param properties The object replication policy set to a storage account. A unique policy ID will be created if
+ * absent.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 replication policy between two storage accounts.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ObjectReplicationPolicyInner createOrUpdate(
+ String resourceGroupName,
+ String accountName,
+ String objectReplicationPolicyId,
+ ObjectReplicationPolicyInner properties);
+
+ /**
+ * Create or update the object replication policy of the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @param properties The object replication policy set to a storage account. A unique policy ID will be created if
+ * absent.
+ * @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 replication policy between two storage accounts.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createOrUpdateWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String objectReplicationPolicyId,
+ ObjectReplicationPolicyInner properties,
+ Context context);
+
+ /**
+ * Deletes the object replication policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 accountName, String objectReplicationPolicyId);
+
+ /**
+ * Deletes the object replication policy associated with the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param objectReplicationPolicyId For the destination account, provide the value 'default'. Configure the policy
+ * on the destination account first. For the source account, provide the value of the policy ID that is returned
+ * when you download the policy that was defined on the destination account. The policy is downloaded as a JSON
+ * file.
+ * @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 accountName, String objectReplicationPolicyId, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/OperationsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/OperationsClient.java
new file mode 100644
index 0000000000000..ce25557b35007
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/OperationsClient.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.storage.generated.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.storage.generated.fluent.models.OperationInner;
+
+/** An instance of this class provides access to all the operations defined in OperationsClient. */
+public interface OperationsClient {
+ /**
+ * Lists all of the available Storage 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 Storage operations.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Lists all of the available Storage 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 Storage operations.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateEndpointConnectionsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateEndpointConnectionsClient.java
new file mode 100644
index 0000000000000..060ab616aa35c
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateEndpointConnectionsClient.java
@@ -0,0 +1,164 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.PrivateEndpointConnectionInner;
+
+/** An instance of this class provides access to all the operations defined in PrivateEndpointConnectionsClient. */
+public interface PrivateEndpointConnectionsClient {
+ /**
+ * List all the private endpoint connections associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return list of private endpoint connection associated with the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * List all the private endpoint connections associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list of private endpoint connection associated with the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Gets the specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * resource.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 specified private endpoint connection associated with the storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ PrivateEndpointConnectionInner get(
+ String resourceGroupName, String accountName, String privateEndpointConnectionName);
+
+ /**
+ * Gets the specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * resource.
+ * @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 specified private endpoint connection associated with the storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String accountName, String privateEndpointConnectionName, Context context);
+
+ /**
+ * Update the state of specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * resource.
+ * @param properties The private endpoint connection properties.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 Private Endpoint Connection resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ PrivateEndpointConnectionInner put(
+ String resourceGroupName,
+ String accountName,
+ String privateEndpointConnectionName,
+ PrivateEndpointConnectionInner properties);
+
+ /**
+ * Update the state of specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * resource.
+ * @param properties The private endpoint connection properties.
+ * @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 Private Endpoint Connection resource.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response putWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String privateEndpointConnectionName,
+ PrivateEndpointConnectionInner properties,
+ Context context);
+
+ /**
+ * Deletes the specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * resource.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 accountName, String privateEndpointConnectionName);
+
+ /**
+ * Deletes the specified private endpoint connection associated with the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param privateEndpointConnectionName The name of the private endpoint connection associated with the Azure
+ * resource.
+ * @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 accountName, String privateEndpointConnectionName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateLinkResourcesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateLinkResourcesClient.java
new file mode 100644
index 0000000000000..175abd773dead
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/PrivateLinkResourcesClient.java
@@ -0,0 +1,46 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.PrivateLinkResourceListResultInner;
+
+/** An instance of this class provides access to all the operations defined in PrivateLinkResourcesClient. */
+public interface PrivateLinkResourcesClient {
+ /**
+ * Gets the private link resources that need to be created for a storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 private link resources that need to be created for a storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ PrivateLinkResourceListResultInner listByStorageAccount(String resourceGroupName, String accountName);
+
+ /**
+ * Gets the private link resources that need to be created for a storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 private link resources that need to be created for a storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listByStorageAccountWithResponse(
+ String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueueServicesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueueServicesClient.java
new file mode 100644
index 0000000000000..b58047499d9a3
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueueServicesClient.java
@@ -0,0 +1,121 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.ListQueueServicesInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.QueueServicePropertiesInner;
+
+/** An instance of this class provides access to all the operations defined in QueueServicesClient. */
+public interface QueueServicesClient {
+ /**
+ * List all queue services for the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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)
+ ListQueueServicesInner list(String resourceGroupName, String accountName);
+
+ /**
+ * List all queue services for the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 listWithResponse(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Sets the properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Queue service, only properties for Storage Analytics and
+ * CORS (Cross-Origin Resource Sharing) rules can be specified.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 properties of a storage account’s Queue service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ QueueServicePropertiesInner setServiceProperties(
+ String resourceGroupName, String accountName, QueueServicePropertiesInner parameters);
+
+ /**
+ * Sets the properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Queue service, only properties for Storage Analytics and
+ * CORS (Cross-Origin Resource Sharing) rules can be specified.
+ * @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 properties of a storage account’s Queue service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response setServicePropertiesWithResponse(
+ String resourceGroupName, String accountName, QueueServicePropertiesInner parameters, Context context);
+
+ /**
+ * Gets the properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ QueueServicePropertiesInner getServiceProperties(String resourceGroupName, String accountName);
+
+ /**
+ * Gets the properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of a storage account’s Queue service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getServicePropertiesWithResponse(
+ String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueuesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueuesClient.java
new file mode 100644
index 0000000000000..e14a5230967fe
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/QueuesClient.java
@@ -0,0 +1,205 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.ListQueueInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.StorageQueueInner;
+
+/** An instance of this class provides access to all the operations defined in QueuesClient. */
+public interface QueuesClient {
+ /**
+ * Creates a new queue with the specified queue name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @param queue Queue properties and metadata to be created with.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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)
+ StorageQueueInner create(String resourceGroupName, String accountName, String queueName, StorageQueueInner queue);
+
+ /**
+ * Creates a new queue with the specified queue name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @param queue Queue properties and metadata to be created with.
+ * @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 createWithResponse(
+ String resourceGroupName, String accountName, String queueName, StorageQueueInner queue, Context context);
+
+ /**
+ * Creates a new queue with the specified queue name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @param queue Queue properties and metadata to be created with.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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)
+ StorageQueueInner update(String resourceGroupName, String accountName, String queueName, StorageQueueInner queue);
+
+ /**
+ * Creates a new queue with the specified queue name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @param queue Queue properties and metadata to be created with.
+ * @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 updateWithResponse(
+ String resourceGroupName, String accountName, String queueName, StorageQueueInner queue, Context context);
+
+ /**
+ * Gets the queue with the specified queue name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 queue with the specified queue name, under the specified account if it exists.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageQueueInner get(String resourceGroupName, String accountName, String queueName);
+
+ /**
+ * Gets the queue with the specified queue name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @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 queue with the specified queue name, under the specified account if it exists.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String accountName, String queueName, Context context);
+
+ /**
+ * Deletes the queue with the specified queue name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 accountName, String queueName);
+
+ /**
+ * Deletes the queue with the specified queue name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param queueName A queue name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of lowercase alphanumeric and dash(-) characters only, it should begin and end with an
+ * alphanumeric character and it cannot have two consecutive dash(-) characters.
+ * @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 accountName, String queueName, Context context);
+
+ /**
+ * Gets a list of all the queues under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 list of all the queues under the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Gets a list of all the queues under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional, a maximum number of queues that should be included in a list queue response.
+ * @param filter Optional, When specified, only the queues with a name starting with the given filter will be
+ * listed.
+ * @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 list of all the queues under the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(
+ String resourceGroupName, String accountName, String maxpagesize, String filter, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/SkusClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/SkusClient.java
new file mode 100644
index 0000000000000..ba5c9e83b2aca
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/SkusClient.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.storage.generated.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.storage.generated.fluent.models.SkuInformationInner;
+
+/** An instance of this class provides access to all the operations defined in SkusClient. */
+public interface SkusClient {
+ /**
+ * Lists the available SKUs supported by Microsoft.Storage for given 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 from the List Storage SKUs operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Lists the available SKUs supported by Microsoft.Storage for given subscription.
+ *
+ * @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 from the List Storage SKUs operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageAccountsClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageAccountsClient.java
new file mode 100644
index 0000000000000..308f719b42254
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageAccountsClient.java
@@ -0,0 +1,612 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.BlobRestoreStatusInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.CheckNameAvailabilityResultInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ListAccountSasResponseInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ListServiceSasResponseInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.StorageAccountInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.StorageAccountListKeysResultInner;
+import com.azure.resourcemanager.storage.generated.models.AccountSasParameters;
+import com.azure.resourcemanager.storage.generated.models.BlobRestoreParameters;
+import com.azure.resourcemanager.storage.generated.models.ListKeyExpand;
+import com.azure.resourcemanager.storage.generated.models.ServiceSasParameters;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountCheckNameAvailabilityParameters;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountCreateParameters;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountExpand;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountRegenerateKeyParameters;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountUpdateParameters;
+
+/** An instance of this class provides access to all the operations defined in StorageAccountsClient. */
+public interface StorageAccountsClient {
+ /**
+ * Checks that the storage account name is valid and is not already in use.
+ *
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 CheckNameAvailability operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ CheckNameAvailabilityResultInner checkNameAvailability(StorageAccountCheckNameAvailabilityParameters accountName);
+
+ /**
+ * Checks that the storage account name is valid and is not already in use.
+ *
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 CheckNameAvailability operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response checkNameAvailabilityWithResponse(
+ StorageAccountCheckNameAvailabilityParameters accountName, Context context);
+
+ /**
+ * Asynchronously creates a new storage account with the specified parameters. If an account is already created and
+ * a subsequent create request is issued with different properties, the account properties will be updated. If an
+ * account is already created and a subsequent create or update request is issued with the exact same set of
+ * properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the created account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, StorageAccountInner> beginCreate(
+ String resourceGroupName, String accountName, StorageAccountCreateParameters parameters);
+
+ /**
+ * Asynchronously creates a new storage account with the specified parameters. If an account is already created and
+ * a subsequent create request is issued with different properties, the account properties will be updated. If an
+ * account is already created and a subsequent create or update request is issued with the exact same set of
+ * properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the created account.
+ * @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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, StorageAccountInner> beginCreate(
+ String resourceGroupName, String accountName, StorageAccountCreateParameters parameters, Context context);
+
+ /**
+ * Asynchronously creates a new storage account with the specified parameters. If an account is already created and
+ * a subsequent create request is issued with different properties, the account properties will be updated. If an
+ * account is already created and a subsequent create or update request is issued with the exact same set of
+ * properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the created account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountInner create(String resourceGroupName, String accountName, StorageAccountCreateParameters parameters);
+
+ /**
+ * Asynchronously creates a new storage account with the specified parameters. If an account is already created and
+ * a subsequent create request is issued with different properties, the account properties will be updated. If an
+ * account is already created and a subsequent create or update request is issued with the exact same set of
+ * properties, the request will succeed.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the created account.
+ * @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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountInner create(
+ String resourceGroupName, String accountName, StorageAccountCreateParameters parameters, Context context);
+
+ /**
+ * Deletes a storage account in Microsoft Azure.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 accountName);
+
+ /**
+ * Deletes a storage account in Microsoft Azure.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 accountName, Context context);
+
+ /**
+ * Returns the properties for the specified storage account including but not limited to name, SKU name, location,
+ * and account status. The ListKeys operation should be used to retrieve storage keys.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountInner getByResourceGroup(String resourceGroupName, String accountName);
+
+ /**
+ * Returns the properties for the specified storage account including but not limited to name, SKU name, location,
+ * and account status. The ListKeys operation should be used to retrieve storage keys.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param expand May be used to expand the properties within account's properties. By default, data is not included
+ * when fetching properties. Currently we only support geoReplicationStats and blobRestoreStatus.
+ * @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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getByResourceGroupWithResponse(
+ String resourceGroupName, String accountName, StorageAccountExpand expand, Context context);
+
+ /**
+ * The update operation can be used to update the SKU, encryption, access tier, or tags for a storage account. It
+ * can also be used to map the account to a custom domain. Only one custom domain is supported per storage account;
+ * the replacement/change of custom domain is not supported. In order to replace an old custom domain, the old value
+ * must be cleared/unregistered before a new value can be set. The update of multiple properties is supported. This
+ * call does not change the storage keys for the account. If you want to change the storage account keys, use the
+ * regenerate keys operation. The location and name of the storage account cannot be changed after creation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the updated account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountInner update(String resourceGroupName, String accountName, StorageAccountUpdateParameters parameters);
+
+ /**
+ * The update operation can be used to update the SKU, encryption, access tier, or tags for a storage account. It
+ * can also be used to map the account to a custom domain. Only one custom domain is supported per storage account;
+ * the replacement/change of custom domain is not supported. In order to replace an old custom domain, the old value
+ * must be cleared/unregistered before a new value can be set. The update of multiple properties is supported. This
+ * call does not change the storage keys for the account. If you want to change the storage account keys, use the
+ * regenerate keys operation. The location and name of the storage account cannot be changed after creation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for the updated account.
+ * @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 storage account.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String accountName, StorageAccountUpdateParameters parameters, Context context);
+
+ /**
+ * Lists all the storage accounts available under the subscription. Note that storage keys are not returned; use the
+ * ListKeys operation for this.
+ *
+ * @throws com.azure.core.management.exception.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 from the List Storage Accounts operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list();
+
+ /**
+ * Lists all the storage accounts available under the subscription. Note that storage keys are not returned; use the
+ * ListKeys operation for this.
+ *
+ * @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 from the List Storage Accounts operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(Context context);
+
+ /**
+ * Lists all the storage accounts available under the given resource group. Note that storage keys are not returned;
+ * use the ListKeys operation for this.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 from the List Storage Accounts operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(String resourceGroupName);
+
+ /**
+ * Lists all the storage accounts available under the given resource group. Note that storage keys are not returned;
+ * use the ListKeys operation for this.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @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 from the List Storage Accounts operation.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByResourceGroup(String resourceGroupName, Context context);
+
+ /**
+ * Lists the access keys or Kerberos keys (if active directory enabled) for the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 from the ListKeys operation.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountListKeysResultInner listKeys(String resourceGroupName, String accountName);
+
+ /**
+ * Lists the access keys or Kerberos keys (if active directory enabled) for the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param expand Specifies type of the key to be listed. Possible value is kerb.
+ * @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 from the ListKeys operation.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listKeysWithResponse(
+ String resourceGroupName, String accountName, ListKeyExpand expand, Context context);
+
+ /**
+ * Regenerates one of the access keys or Kerberos keys for the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param regenerateKey Specifies name of the key which should be regenerated -- key1, key2, kerb1, kerb2.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 from the ListKeys operation.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ StorageAccountListKeysResultInner regenerateKey(
+ String resourceGroupName, String accountName, StorageAccountRegenerateKeyParameters regenerateKey);
+
+ /**
+ * Regenerates one of the access keys or Kerberos keys for the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param regenerateKey Specifies name of the key which should be regenerated -- key1, key2, kerb1, kerb2.
+ * @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 from the ListKeys operation.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response regenerateKeyWithResponse(
+ String resourceGroupName,
+ String accountName,
+ StorageAccountRegenerateKeyParameters regenerateKey,
+ Context context);
+
+ /**
+ * List SAS credentials of a storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide to list SAS credentials for the storage account.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 List SAS credentials operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ListAccountSasResponseInner listAccountSas(
+ String resourceGroupName, String accountName, AccountSasParameters parameters);
+
+ /**
+ * List SAS credentials of a storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide to list SAS credentials for the storage account.
+ * @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 List SAS credentials operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listAccountSasWithResponse(
+ String resourceGroupName, String accountName, AccountSasParameters parameters, Context context);
+
+ /**
+ * List service SAS credentials of a specific resource.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide to list service SAS credentials.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 List service SAS credentials operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ ListServiceSasResponseInner listServiceSas(
+ String resourceGroupName, String accountName, ServiceSasParameters parameters);
+
+ /**
+ * List service SAS credentials of a specific resource.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide to list service SAS credentials.
+ * @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 List service SAS credentials operation response.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response listServiceSasWithResponse(
+ String resourceGroupName, String accountName, ServiceSasParameters parameters, Context context);
+
+ /**
+ * Failover request can be triggered for a storage account in case of availability issues. The failover occurs from
+ * the storage account's primary cluster to secondary cluster for RA-GRS accounts. The secondary cluster will become
+ * primary after failover.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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> beginFailover(String resourceGroupName, String accountName);
+
+ /**
+ * Failover request can be triggered for a storage account in case of availability issues. The failover occurs from
+ * the storage account's primary cluster to secondary cluster for RA-GRS accounts. The secondary cluster will become
+ * primary after failover.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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> beginFailover(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Failover request can be triggered for a storage account in case of availability issues. The failover occurs from
+ * the storage account's primary cluster to secondary cluster for RA-GRS accounts. The secondary cluster will become
+ * primary after failover.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 failover(String resourceGroupName, String accountName);
+
+ /**
+ * Failover request can be triggered for a storage account in case of availability issues. The failover occurs from
+ * the storage account's primary cluster to secondary cluster for RA-GRS accounts. The secondary cluster will become
+ * primary after failover.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 failover(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Restore blobs in the specified blob ranges.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for restore blob ranges.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return blob restore status.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, BlobRestoreStatusInner> beginRestoreBlobRanges(
+ String resourceGroupName, String accountName, BlobRestoreParameters parameters);
+
+ /**
+ * Restore blobs in the specified blob ranges.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for restore blob ranges.
+ * @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 blob restore status.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ SyncPoller, BlobRestoreStatusInner> beginRestoreBlobRanges(
+ String resourceGroupName, String accountName, BlobRestoreParameters parameters, Context context);
+
+ /**
+ * Restore blobs in the specified blob ranges.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for restore blob ranges.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return blob restore status.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobRestoreStatusInner restoreBlobRanges(
+ String resourceGroupName, String accountName, BlobRestoreParameters parameters);
+
+ /**
+ * Restore blobs in the specified blob ranges.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The parameters to provide for restore blob ranges.
+ * @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 blob restore status.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ BlobRestoreStatusInner restoreBlobRanges(
+ String resourceGroupName, String accountName, BlobRestoreParameters parameters, Context context);
+
+ /**
+ * Revoke user delegation keys.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 revokeUserDelegationKeys(String resourceGroupName, String accountName);
+
+ /**
+ * Revoke user delegation keys.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 revokeUserDelegationKeysWithResponse(String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageManagementClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageManagementClient.java
new file mode 100644
index 0000000000000..929d7fbf4cd4a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/StorageManagementClient.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.storage.generated.fluent;
+
+import com.azure.core.http.HttpPipeline;
+import java.time.Duration;
+
+/** The interface for StorageManagementClient class. */
+public interface StorageManagementClient {
+ /**
+ * Gets The ID of the target subscription.
+ *
+ * @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 OperationsClient object to access its operations.
+ *
+ * @return the OperationsClient object.
+ */
+ OperationsClient getOperations();
+
+ /**
+ * Gets the SkusClient object to access its operations.
+ *
+ * @return the SkusClient object.
+ */
+ SkusClient getSkus();
+
+ /**
+ * Gets the StorageAccountsClient object to access its operations.
+ *
+ * @return the StorageAccountsClient object.
+ */
+ StorageAccountsClient getStorageAccounts();
+
+ /**
+ * Gets the DeletedAccountsClient object to access its operations.
+ *
+ * @return the DeletedAccountsClient object.
+ */
+ DeletedAccountsClient getDeletedAccounts();
+
+ /**
+ * Gets the UsagesClient object to access its operations.
+ *
+ * @return the UsagesClient object.
+ */
+ UsagesClient getUsages();
+
+ /**
+ * Gets the ManagementPoliciesClient object to access its operations.
+ *
+ * @return the ManagementPoliciesClient object.
+ */
+ ManagementPoliciesClient getManagementPolicies();
+
+ /**
+ * Gets the BlobInventoryPoliciesClient object to access its operations.
+ *
+ * @return the BlobInventoryPoliciesClient object.
+ */
+ BlobInventoryPoliciesClient getBlobInventoryPolicies();
+
+ /**
+ * Gets the PrivateEndpointConnectionsClient object to access its operations.
+ *
+ * @return the PrivateEndpointConnectionsClient object.
+ */
+ PrivateEndpointConnectionsClient getPrivateEndpointConnections();
+
+ /**
+ * Gets the PrivateLinkResourcesClient object to access its operations.
+ *
+ * @return the PrivateLinkResourcesClient object.
+ */
+ PrivateLinkResourcesClient getPrivateLinkResources();
+
+ /**
+ * Gets the ObjectReplicationPoliciesOperationsClient object to access its operations.
+ *
+ * @return the ObjectReplicationPoliciesOperationsClient object.
+ */
+ ObjectReplicationPoliciesOperationsClient getObjectReplicationPoliciesOperations();
+
+ /**
+ * Gets the EncryptionScopesClient object to access its operations.
+ *
+ * @return the EncryptionScopesClient object.
+ */
+ EncryptionScopesClient getEncryptionScopes();
+
+ /**
+ * Gets the BlobServicesClient object to access its operations.
+ *
+ * @return the BlobServicesClient object.
+ */
+ BlobServicesClient getBlobServices();
+
+ /**
+ * Gets the BlobContainersClient object to access its operations.
+ *
+ * @return the BlobContainersClient object.
+ */
+ BlobContainersClient getBlobContainers();
+
+ /**
+ * Gets the FileServicesClient object to access its operations.
+ *
+ * @return the FileServicesClient object.
+ */
+ FileServicesClient getFileServices();
+
+ /**
+ * Gets the FileSharesClient object to access its operations.
+ *
+ * @return the FileSharesClient object.
+ */
+ FileSharesClient getFileShares();
+
+ /**
+ * Gets the QueueServicesClient object to access its operations.
+ *
+ * @return the QueueServicesClient object.
+ */
+ QueueServicesClient getQueueServices();
+
+ /**
+ * Gets the QueuesClient object to access its operations.
+ *
+ * @return the QueuesClient object.
+ */
+ QueuesClient getQueues();
+
+ /**
+ * Gets the TableServicesClient object to access its operations.
+ *
+ * @return the TableServicesClient object.
+ */
+ TableServicesClient getTableServices();
+
+ /**
+ * Gets the TablesClient object to access its operations.
+ *
+ * @return the TablesClient object.
+ */
+ TablesClient getTables();
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TableServicesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TableServicesClient.java
new file mode 100644
index 0000000000000..4ff563143a9a8
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TableServicesClient.java
@@ -0,0 +1,121 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.ListTableServicesInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.TableServicePropertiesInner;
+
+/** An instance of this class provides access to all the operations defined in TableServicesClient. */
+public interface TableServicesClient {
+ /**
+ * List all table services for the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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)
+ ListTableServicesInner list(String resourceGroupName, String accountName);
+
+ /**
+ * List all table services for the storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 listWithResponse(String resourceGroupName, String accountName, Context context);
+
+ /**
+ * Sets the properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Table service, only properties for Storage Analytics and
+ * CORS (Cross-Origin Resource Sharing) rules can be specified.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 properties of a storage account’s Table service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ TableServicePropertiesInner setServiceProperties(
+ String resourceGroupName, String accountName, TableServicePropertiesInner parameters);
+
+ /**
+ * Sets the properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param parameters The properties of a storage account’s Table service, only properties for Storage Analytics and
+ * CORS (Cross-Origin Resource Sharing) rules can be specified.
+ * @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 properties of a storage account’s Table service.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response setServicePropertiesWithResponse(
+ String resourceGroupName, String accountName, TableServicePropertiesInner parameters, Context context);
+
+ /**
+ * Gets the properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ TableServicePropertiesInner getServiceProperties(String resourceGroupName, String accountName);
+
+ /**
+ * Gets the properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 properties of a storage account’s Table service, including properties for Storage Analytics and CORS
+ * (Cross-Origin Resource Sharing) rules.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getServicePropertiesWithResponse(
+ String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TablesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TablesClient.java
new file mode 100644
index 0000000000000..4cf74d2225d65
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/TablesClient.java
@@ -0,0 +1,188 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.TableInner;
+
+/** An instance of this class provides access to all the operations defined in TablesClient. */
+public interface TablesClient {
+ /**
+ * Creates a new table with the specified table name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 the table, including Id, resource name, resource type.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ TableInner create(String resourceGroupName, String accountName, String tableName);
+
+ /**
+ * Creates a new table with the specified table name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @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 the table, including Id, resource name, resource type.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response createWithResponse(
+ String resourceGroupName, String accountName, String tableName, Context context);
+
+ /**
+ * Creates a new table with the specified table name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 the table, including Id, resource name, resource type.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ TableInner update(String resourceGroupName, String accountName, String tableName);
+
+ /**
+ * Creates a new table with the specified table name, under the specified account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @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 the table, including Id, resource name, resource type.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response updateWithResponse(
+ String resourceGroupName, String accountName, String tableName, Context context);
+
+ /**
+ * Gets the table with the specified table name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 table with the specified table name, under the specified account if it exists.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ TableInner get(String resourceGroupName, String accountName, String tableName);
+
+ /**
+ * Gets the table with the specified table name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @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 table with the specified table name, under the specified account if it exists.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ Response getWithResponse(
+ String resourceGroupName, String accountName, String tableName, Context context);
+
+ /**
+ * Deletes the table with the specified table name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.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 accountName, String tableName);
+
+ /**
+ * Deletes the table with the specified table name, under the specified account if it exists.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param tableName A table name must be unique within a storage account and must be between 3 and 63 characters.The
+ * name must comprise of only alphanumeric characters and it cannot begin with a numeric character.
+ * @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 accountName, String tableName, Context context);
+
+ /**
+ * Gets a list of all the tables under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 list of all the tables under the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName);
+
+ /**
+ * Gets a list of all the tables under the specified storage account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @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 list of all the tables under the specified storage account.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable list(String resourceGroupName, String accountName, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/UsagesClient.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/UsagesClient.java
new file mode 100644
index 0000000000000..376b1987868e1
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/UsagesClient.java
@@ -0,0 +1,39 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.fluent.models.UsageInner;
+
+/** An instance of this class provides access to all the operations defined in UsagesClient. */
+public interface UsagesClient {
+ /**
+ * Gets the current usage count and the limit for the resources of the location under the subscription.
+ *
+ * @param location The location of the Azure Storage resource.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws com.azure.core.management.exception.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 current usage count and the limit for the resources of the location under the subscription.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByLocation(String location);
+
+ /**
+ * Gets the current usage count and the limit for the resources of the location under the subscription.
+ *
+ * @param location The location of the Azure Storage resource.
+ * @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 current usage count and the limit for the resources of the location under the subscription.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ PagedIterable listByLocation(String location, Context context);
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobContainerInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobContainerInner.java
new file mode 100644
index 0000000000000..15535ba7a2ef6
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobContainerInner.java
@@ -0,0 +1,380 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyProperties;
+import com.azure.resourcemanager.storage.generated.models.ImmutableStorageWithVersioning;
+import com.azure.resourcemanager.storage.generated.models.LeaseDuration;
+import com.azure.resourcemanager.storage.generated.models.LeaseState;
+import com.azure.resourcemanager.storage.generated.models.LeaseStatus;
+import com.azure.resourcemanager.storage.generated.models.LegalHoldProperties;
+import com.azure.resourcemanager.storage.generated.models.PublicAccess;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** Properties of the blob container, including Id, resource name, resource type, Etag. */
+@JsonFlatten
+@Fluent
+public class BlobContainerInner extends AzureEntityResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(BlobContainerInner.class);
+
+ /*
+ * The version of the deleted blob container.
+ */
+ @JsonProperty(value = "properties.version", access = JsonProperty.Access.WRITE_ONLY)
+ private String version;
+
+ /*
+ * Indicates whether the blob container was deleted.
+ */
+ @JsonProperty(value = "properties.deleted", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean deleted;
+
+ /*
+ * Blob container deletion time.
+ */
+ @JsonProperty(value = "properties.deletedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime deletedTime;
+
+ /*
+ * Remaining retention days for soft deleted blob container.
+ */
+ @JsonProperty(value = "properties.remainingRetentionDays", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer remainingRetentionDays;
+
+ /*
+ * Default the container to use specified encryption scope for all writes.
+ */
+ @JsonProperty(value = "properties.defaultEncryptionScope")
+ private String defaultEncryptionScope;
+
+ /*
+ * Block override of encryption scope from the container default.
+ */
+ @JsonProperty(value = "properties.denyEncryptionScopeOverride")
+ private Boolean denyEncryptionScopeOverride;
+
+ /*
+ * Specifies whether data in the container may be accessed publicly and the
+ * level of access.
+ */
+ @JsonProperty(value = "properties.publicAccess")
+ private PublicAccess publicAccess;
+
+ /*
+ * Returns the date and time the container was last modified.
+ */
+ @JsonProperty(value = "properties.lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * The lease status of the container.
+ */
+ @JsonProperty(value = "properties.leaseStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseStatus leaseStatus;
+
+ /*
+ * Lease state of the container.
+ */
+ @JsonProperty(value = "properties.leaseState", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseState leaseState;
+
+ /*
+ * Specifies whether the lease on a container is of infinite or fixed
+ * duration, only when the container is leased.
+ */
+ @JsonProperty(value = "properties.leaseDuration", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseDuration leaseDuration;
+
+ /*
+ * A name-value pair to associate with the container as metadata.
+ */
+ @JsonProperty(value = "properties.metadata")
+ private Map metadata;
+
+ /*
+ * The ImmutabilityPolicy property of the container.
+ */
+ @JsonProperty(value = "properties.immutabilityPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private ImmutabilityPolicyProperties immutabilityPolicy;
+
+ /*
+ * The LegalHold property of the container.
+ */
+ @JsonProperty(value = "properties.legalHold", access = JsonProperty.Access.WRITE_ONLY)
+ private LegalHoldProperties legalHold;
+
+ /*
+ * The hasLegalHold public property is set to true by SRP if there are at
+ * least one existing tag. The hasLegalHold public property is set to false
+ * by SRP if all existing legal hold tags are cleared out. There can be a
+ * maximum of 1000 blob containers with hasLegalHold=true for a given
+ * account.
+ */
+ @JsonProperty(value = "properties.hasLegalHold", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean hasLegalHold;
+
+ /*
+ * The hasImmutabilityPolicy public property is set to true by SRP if
+ * ImmutabilityPolicy has been created for this container. The
+ * hasImmutabilityPolicy public property is set to false by SRP if
+ * ImmutabilityPolicy has not been created for this container.
+ */
+ @JsonProperty(value = "properties.hasImmutabilityPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean hasImmutabilityPolicy;
+
+ /*
+ * The object level immutability property of the container. The property is
+ * immutable and can only be set to true at the container creation time.
+ * Existing containers must undergo a migration process.
+ */
+ @JsonProperty(value = "properties.immutableStorageWithVersioning")
+ private ImmutableStorageWithVersioning immutableStorageWithVersioning;
+
+ /**
+ * Get the version property: The version of the deleted blob container.
+ *
+ * @return the version value.
+ */
+ public String version() {
+ return this.version;
+ }
+
+ /**
+ * Get the deleted property: Indicates whether the blob container was deleted.
+ *
+ * @return the deleted value.
+ */
+ public Boolean deleted() {
+ return this.deleted;
+ }
+
+ /**
+ * Get the deletedTime property: Blob container deletion time.
+ *
+ * @return the deletedTime value.
+ */
+ public OffsetDateTime deletedTime() {
+ return this.deletedTime;
+ }
+
+ /**
+ * Get the remainingRetentionDays property: Remaining retention days for soft deleted blob container.
+ *
+ * @return the remainingRetentionDays value.
+ */
+ public Integer remainingRetentionDays() {
+ return this.remainingRetentionDays;
+ }
+
+ /**
+ * Get the defaultEncryptionScope property: Default the container to use specified encryption scope for all writes.
+ *
+ * @return the defaultEncryptionScope value.
+ */
+ public String defaultEncryptionScope() {
+ return this.defaultEncryptionScope;
+ }
+
+ /**
+ * Set the defaultEncryptionScope property: Default the container to use specified encryption scope for all writes.
+ *
+ * @param defaultEncryptionScope the defaultEncryptionScope value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withDefaultEncryptionScope(String defaultEncryptionScope) {
+ this.defaultEncryptionScope = defaultEncryptionScope;
+ return this;
+ }
+
+ /**
+ * Get the denyEncryptionScopeOverride property: Block override of encryption scope from the container default.
+ *
+ * @return the denyEncryptionScopeOverride value.
+ */
+ public Boolean denyEncryptionScopeOverride() {
+ return this.denyEncryptionScopeOverride;
+ }
+
+ /**
+ * Set the denyEncryptionScopeOverride property: Block override of encryption scope from the container default.
+ *
+ * @param denyEncryptionScopeOverride the denyEncryptionScopeOverride value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withDenyEncryptionScopeOverride(Boolean denyEncryptionScopeOverride) {
+ this.denyEncryptionScopeOverride = denyEncryptionScopeOverride;
+ return this;
+ }
+
+ /**
+ * Get the publicAccess property: Specifies whether data in the container may be accessed publicly and the level of
+ * access.
+ *
+ * @return the publicAccess value.
+ */
+ public PublicAccess publicAccess() {
+ return this.publicAccess;
+ }
+
+ /**
+ * Set the publicAccess property: Specifies whether data in the container may be accessed publicly and the level of
+ * access.
+ *
+ * @param publicAccess the publicAccess value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withPublicAccess(PublicAccess publicAccess) {
+ this.publicAccess = publicAccess;
+ return this;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the container was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the leaseStatus property: The lease status of the container.
+ *
+ * @return the leaseStatus value.
+ */
+ public LeaseStatus leaseStatus() {
+ return this.leaseStatus;
+ }
+
+ /**
+ * Get the leaseState property: Lease state of the container.
+ *
+ * @return the leaseState value.
+ */
+ public LeaseState leaseState() {
+ return this.leaseState;
+ }
+
+ /**
+ * Get the leaseDuration property: Specifies whether the lease on a container is of infinite or fixed duration, only
+ * when the container is leased.
+ *
+ * @return the leaseDuration value.
+ */
+ public LeaseDuration leaseDuration() {
+ return this.leaseDuration;
+ }
+
+ /**
+ * Get the metadata property: A name-value pair to associate with the container as metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.metadata;
+ }
+
+ /**
+ * Set the metadata property: A name-value pair to associate with the container as metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Get the immutabilityPolicy property: The ImmutabilityPolicy property of the container.
+ *
+ * @return the immutabilityPolicy value.
+ */
+ public ImmutabilityPolicyProperties immutabilityPolicy() {
+ return this.immutabilityPolicy;
+ }
+
+ /**
+ * Get the legalHold property: The LegalHold property of the container.
+ *
+ * @return the legalHold value.
+ */
+ public LegalHoldProperties legalHold() {
+ return this.legalHold;
+ }
+
+ /**
+ * Get the hasLegalHold property: The hasLegalHold public property is set to true by SRP if there are at least one
+ * existing tag. The hasLegalHold public property is set to false by SRP if all existing legal hold tags are cleared
+ * out. There can be a maximum of 1000 blob containers with hasLegalHold=true for a given account.
+ *
+ * @return the hasLegalHold value.
+ */
+ public Boolean hasLegalHold() {
+ return this.hasLegalHold;
+ }
+
+ /**
+ * Get the hasImmutabilityPolicy property: The hasImmutabilityPolicy public property is set to true by SRP if
+ * ImmutabilityPolicy has been created for this container. The hasImmutabilityPolicy public property is set to false
+ * by SRP if ImmutabilityPolicy has not been created for this container.
+ *
+ * @return the hasImmutabilityPolicy value.
+ */
+ public Boolean hasImmutabilityPolicy() {
+ return this.hasImmutabilityPolicy;
+ }
+
+ /**
+ * Get the immutableStorageWithVersioning property: The object level immutability property of the container. The
+ * property is immutable and can only be set to true at the container creation time. Existing containers must
+ * undergo a migration process.
+ *
+ * @return the immutableStorageWithVersioning value.
+ */
+ public ImmutableStorageWithVersioning immutableStorageWithVersioning() {
+ return this.immutableStorageWithVersioning;
+ }
+
+ /**
+ * Set the immutableStorageWithVersioning property: The object level immutability property of the container. The
+ * property is immutable and can only be set to true at the container creation time. Existing containers must
+ * undergo a migration process.
+ *
+ * @param immutableStorageWithVersioning the immutableStorageWithVersioning value to set.
+ * @return the BlobContainerInner object itself.
+ */
+ public BlobContainerInner withImmutableStorageWithVersioning(
+ ImmutableStorageWithVersioning immutableStorageWithVersioning) {
+ this.immutableStorageWithVersioning = immutableStorageWithVersioning;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ super.validate();
+ if (immutabilityPolicy() != null) {
+ immutabilityPolicy().validate();
+ }
+ if (legalHold() != null) {
+ legalHold().validate();
+ }
+ if (immutableStorageWithVersioning() != null) {
+ immutableStorageWithVersioning().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobInventoryPolicyInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobInventoryPolicyInner.java
new file mode 100644
index 0000000000000..04e1a2cc9cc2d
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobInventoryPolicyInner.java
@@ -0,0 +1,90 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.management.SystemData;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.BlobInventoryPolicySchema;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+
+/** The storage account blob inventory policy. */
+@JsonFlatten
+@Fluent
+public class BlobInventoryPolicyInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(BlobInventoryPolicyInner.class);
+
+ /*
+ * Metadata pertaining to creation and last modification of the resource.
+ */
+ @JsonProperty(value = "systemData", access = JsonProperty.Access.WRITE_ONLY)
+ private SystemData systemData;
+
+ /*
+ * Returns the last modified date and time of the blob inventory policy.
+ */
+ @JsonProperty(value = "properties.lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * The storage account blob inventory policy object. It is composed of
+ * policy rules.
+ */
+ @JsonProperty(value = "properties.policy")
+ private BlobInventoryPolicySchema policy;
+
+ /**
+ * Get the systemData property: Metadata pertaining to creation and last modification of the resource.
+ *
+ * @return the systemData value.
+ */
+ public SystemData systemData() {
+ return this.systemData;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the last modified date and time of the blob inventory policy.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the policy property: The storage account blob inventory policy object. It is composed of policy rules.
+ *
+ * @return the policy value.
+ */
+ public BlobInventoryPolicySchema policy() {
+ return this.policy;
+ }
+
+ /**
+ * Set the policy property: The storage account blob inventory policy object. It is composed of policy rules.
+ *
+ * @param policy the policy value to set.
+ * @return the BlobInventoryPolicyInner object itself.
+ */
+ public BlobInventoryPolicyInner withPolicy(BlobInventoryPolicySchema policy) {
+ this.policy = policy;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (policy() != null) {
+ policy().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobRestoreStatusInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobRestoreStatusInner.java
new file mode 100644
index 0000000000000..7670543eeae7a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobRestoreStatusInner.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.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.BlobRestoreParameters;
+import com.azure.resourcemanager.storage.generated.models.BlobRestoreProgressStatus;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Blob restore status. */
+@Immutable
+public final class BlobRestoreStatusInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(BlobRestoreStatusInner.class);
+
+ /*
+ * The status of blob restore progress. Possible values are: - InProgress:
+ * Indicates that blob restore is ongoing. - Complete: Indicates that blob
+ * restore has been completed successfully. - Failed: Indicates that blob
+ * restore is failed.
+ */
+ @JsonProperty(value = "status", access = JsonProperty.Access.WRITE_ONLY)
+ private BlobRestoreProgressStatus status;
+
+ /*
+ * Failure reason when blob restore is failed.
+ */
+ @JsonProperty(value = "failureReason", access = JsonProperty.Access.WRITE_ONLY)
+ private String failureReason;
+
+ /*
+ * Id for tracking blob restore request.
+ */
+ @JsonProperty(value = "restoreId", access = JsonProperty.Access.WRITE_ONLY)
+ private String restoreId;
+
+ /*
+ * Blob restore request parameters.
+ */
+ @JsonProperty(value = "parameters", access = JsonProperty.Access.WRITE_ONLY)
+ private BlobRestoreParameters parameters;
+
+ /**
+ * Get the status property: The status of blob restore progress. Possible values are: - InProgress: Indicates that
+ * blob restore is ongoing. - Complete: Indicates that blob restore has been completed successfully. - Failed:
+ * Indicates that blob restore is failed.
+ *
+ * @return the status value.
+ */
+ public BlobRestoreProgressStatus status() {
+ return this.status;
+ }
+
+ /**
+ * Get the failureReason property: Failure reason when blob restore is failed.
+ *
+ * @return the failureReason value.
+ */
+ public String failureReason() {
+ return this.failureReason;
+ }
+
+ /**
+ * Get the restoreId property: Id for tracking blob restore request.
+ *
+ * @return the restoreId value.
+ */
+ public String restoreId() {
+ return this.restoreId;
+ }
+
+ /**
+ * Get the parameters property: Blob restore request parameters.
+ *
+ * @return the parameters value.
+ */
+ public BlobRestoreParameters parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (parameters() != null) {
+ parameters().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobServicePropertiesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobServicePropertiesInner.java
new file mode 100644
index 0000000000000..673705127ba16
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/BlobServicePropertiesInner.java
@@ -0,0 +1,321 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.ChangeFeed;
+import com.azure.resourcemanager.storage.generated.models.CorsRules;
+import com.azure.resourcemanager.storage.generated.models.DeleteRetentionPolicy;
+import com.azure.resourcemanager.storage.generated.models.LastAccessTimeTrackingPolicy;
+import com.azure.resourcemanager.storage.generated.models.RestorePolicyProperties;
+import com.azure.resourcemanager.storage.generated.models.Sku;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of a storage account’s Blob service. */
+@JsonFlatten
+@Fluent
+public class BlobServicePropertiesInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(BlobServicePropertiesInner.class);
+
+ /*
+ * Sku name and tier.
+ */
+ @JsonProperty(value = "sku", access = JsonProperty.Access.WRITE_ONLY)
+ private Sku sku;
+
+ /*
+ * Specifies CORS rules for the Blob service. You can include up to five
+ * CorsRule elements in the request. If no CorsRule elements are included
+ * in the request body, all CORS rules will be deleted, and CORS will be
+ * disabled for the Blob service.
+ */
+ @JsonProperty(value = "properties.cors")
+ private CorsRules cors;
+
+ /*
+ * DefaultServiceVersion indicates the default version to use for requests
+ * to the Blob service if an incoming request’s version is not specified.
+ * Possible values include version 2008-10-27 and all more recent versions.
+ */
+ @JsonProperty(value = "properties.defaultServiceVersion")
+ private String defaultServiceVersion;
+
+ /*
+ * The blob service properties for blob soft delete.
+ */
+ @JsonProperty(value = "properties.deleteRetentionPolicy")
+ private DeleteRetentionPolicy deleteRetentionPolicy;
+
+ /*
+ * Versioning is enabled if set to true.
+ */
+ @JsonProperty(value = "properties.isVersioningEnabled")
+ private Boolean isVersioningEnabled;
+
+ /*
+ * Deprecated in favor of isVersioningEnabled property.
+ */
+ @JsonProperty(value = "properties.automaticSnapshotPolicyEnabled")
+ private Boolean automaticSnapshotPolicyEnabled;
+
+ /*
+ * The blob service properties for change feed events.
+ */
+ @JsonProperty(value = "properties.changeFeed")
+ private ChangeFeed changeFeed;
+
+ /*
+ * The blob service properties for blob restore policy.
+ */
+ @JsonProperty(value = "properties.restorePolicy")
+ private RestorePolicyProperties restorePolicy;
+
+ /*
+ * The blob service properties for container soft delete.
+ */
+ @JsonProperty(value = "properties.containerDeleteRetentionPolicy")
+ private DeleteRetentionPolicy containerDeleteRetentionPolicy;
+
+ /*
+ * The blob service property to configure last access time based tracking
+ * policy.
+ */
+ @JsonProperty(value = "properties.lastAccessTimeTrackingPolicy")
+ private LastAccessTimeTrackingPolicy lastAccessTimeTrackingPolicy;
+
+ /**
+ * Get the sku property: Sku name and tier.
+ *
+ * @return the sku value.
+ */
+ public Sku sku() {
+ return this.sku;
+ }
+
+ /**
+ * Get the cors property: Specifies CORS rules for the Blob service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the Blob service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.cors;
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the Blob service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the Blob service.
+ *
+ * @param cors the cors value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withCors(CorsRules cors) {
+ this.cors = cors;
+ return this;
+ }
+
+ /**
+ * Get the defaultServiceVersion property: DefaultServiceVersion indicates the default version to use for requests
+ * to the Blob service if an incoming request’s version is not specified. Possible values include version 2008-10-27
+ * and all more recent versions.
+ *
+ * @return the defaultServiceVersion value.
+ */
+ public String defaultServiceVersion() {
+ return this.defaultServiceVersion;
+ }
+
+ /**
+ * Set the defaultServiceVersion property: DefaultServiceVersion indicates the default version to use for requests
+ * to the Blob service if an incoming request’s version is not specified. Possible values include version 2008-10-27
+ * and all more recent versions.
+ *
+ * @param defaultServiceVersion the defaultServiceVersion value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withDefaultServiceVersion(String defaultServiceVersion) {
+ this.defaultServiceVersion = defaultServiceVersion;
+ return this;
+ }
+
+ /**
+ * Get the deleteRetentionPolicy property: The blob service properties for blob soft delete.
+ *
+ * @return the deleteRetentionPolicy value.
+ */
+ public DeleteRetentionPolicy deleteRetentionPolicy() {
+ return this.deleteRetentionPolicy;
+ }
+
+ /**
+ * Set the deleteRetentionPolicy property: The blob service properties for blob soft delete.
+ *
+ * @param deleteRetentionPolicy the deleteRetentionPolicy value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withDeleteRetentionPolicy(DeleteRetentionPolicy deleteRetentionPolicy) {
+ this.deleteRetentionPolicy = deleteRetentionPolicy;
+ return this;
+ }
+
+ /**
+ * Get the isVersioningEnabled property: Versioning is enabled if set to true.
+ *
+ * @return the isVersioningEnabled value.
+ */
+ public Boolean isVersioningEnabled() {
+ return this.isVersioningEnabled;
+ }
+
+ /**
+ * Set the isVersioningEnabled property: Versioning is enabled if set to true.
+ *
+ * @param isVersioningEnabled the isVersioningEnabled value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withIsVersioningEnabled(Boolean isVersioningEnabled) {
+ this.isVersioningEnabled = isVersioningEnabled;
+ return this;
+ }
+
+ /**
+ * Get the automaticSnapshotPolicyEnabled property: Deprecated in favor of isVersioningEnabled property.
+ *
+ * @return the automaticSnapshotPolicyEnabled value.
+ */
+ public Boolean automaticSnapshotPolicyEnabled() {
+ return this.automaticSnapshotPolicyEnabled;
+ }
+
+ /**
+ * Set the automaticSnapshotPolicyEnabled property: Deprecated in favor of isVersioningEnabled property.
+ *
+ * @param automaticSnapshotPolicyEnabled the automaticSnapshotPolicyEnabled value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withAutomaticSnapshotPolicyEnabled(Boolean automaticSnapshotPolicyEnabled) {
+ this.automaticSnapshotPolicyEnabled = automaticSnapshotPolicyEnabled;
+ return this;
+ }
+
+ /**
+ * Get the changeFeed property: The blob service properties for change feed events.
+ *
+ * @return the changeFeed value.
+ */
+ public ChangeFeed changeFeed() {
+ return this.changeFeed;
+ }
+
+ /**
+ * Set the changeFeed property: The blob service properties for change feed events.
+ *
+ * @param changeFeed the changeFeed value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withChangeFeed(ChangeFeed changeFeed) {
+ this.changeFeed = changeFeed;
+ return this;
+ }
+
+ /**
+ * Get the restorePolicy property: The blob service properties for blob restore policy.
+ *
+ * @return the restorePolicy value.
+ */
+ public RestorePolicyProperties restorePolicy() {
+ return this.restorePolicy;
+ }
+
+ /**
+ * Set the restorePolicy property: The blob service properties for blob restore policy.
+ *
+ * @param restorePolicy the restorePolicy value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withRestorePolicy(RestorePolicyProperties restorePolicy) {
+ this.restorePolicy = restorePolicy;
+ return this;
+ }
+
+ /**
+ * Get the containerDeleteRetentionPolicy property: The blob service properties for container soft delete.
+ *
+ * @return the containerDeleteRetentionPolicy value.
+ */
+ public DeleteRetentionPolicy containerDeleteRetentionPolicy() {
+ return this.containerDeleteRetentionPolicy;
+ }
+
+ /**
+ * Set the containerDeleteRetentionPolicy property: The blob service properties for container soft delete.
+ *
+ * @param containerDeleteRetentionPolicy the containerDeleteRetentionPolicy value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withContainerDeleteRetentionPolicy(
+ DeleteRetentionPolicy containerDeleteRetentionPolicy) {
+ this.containerDeleteRetentionPolicy = containerDeleteRetentionPolicy;
+ return this;
+ }
+
+ /**
+ * Get the lastAccessTimeTrackingPolicy property: The blob service property to configure last access time based
+ * tracking policy.
+ *
+ * @return the lastAccessTimeTrackingPolicy value.
+ */
+ public LastAccessTimeTrackingPolicy lastAccessTimeTrackingPolicy() {
+ return this.lastAccessTimeTrackingPolicy;
+ }
+
+ /**
+ * Set the lastAccessTimeTrackingPolicy property: The blob service property to configure last access time based
+ * tracking policy.
+ *
+ * @param lastAccessTimeTrackingPolicy the lastAccessTimeTrackingPolicy value to set.
+ * @return the BlobServicePropertiesInner object itself.
+ */
+ public BlobServicePropertiesInner withLastAccessTimeTrackingPolicy(
+ LastAccessTimeTrackingPolicy lastAccessTimeTrackingPolicy) {
+ this.lastAccessTimeTrackingPolicy = lastAccessTimeTrackingPolicy;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (sku() != null) {
+ sku().validate();
+ }
+ if (cors() != null) {
+ cors().validate();
+ }
+ if (deleteRetentionPolicy() != null) {
+ deleteRetentionPolicy().validate();
+ }
+ if (changeFeed() != null) {
+ changeFeed().validate();
+ }
+ if (restorePolicy() != null) {
+ restorePolicy().validate();
+ }
+ if (containerDeleteRetentionPolicy() != null) {
+ containerDeleteRetentionPolicy().validate();
+ }
+ if (lastAccessTimeTrackingPolicy() != null) {
+ lastAccessTimeTrackingPolicy().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/CheckNameAvailabilityResultInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/CheckNameAvailabilityResultInner.java
new file mode 100644
index 0000000000000..6afe106dbf3e5
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/CheckNameAvailabilityResultInner.java
@@ -0,0 +1,75 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.Reason;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The CheckNameAvailability operation response. */
+@Immutable
+public final class CheckNameAvailabilityResultInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(CheckNameAvailabilityResultInner.class);
+
+ /*
+ * Gets a boolean value that indicates whether the name is available for
+ * you to use. If true, the name is available. If false, the name has
+ * already been taken or is invalid and cannot be used.
+ */
+ @JsonProperty(value = "nameAvailable", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean nameAvailable;
+
+ /*
+ * Gets the reason that a storage account name could not be used. The
+ * Reason element is only returned if NameAvailable is false.
+ */
+ @JsonProperty(value = "reason", access = JsonProperty.Access.WRITE_ONLY)
+ private Reason reason;
+
+ /*
+ * Gets an error message explaining the Reason value in more detail.
+ */
+ @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY)
+ private String message;
+
+ /**
+ * Get the nameAvailable property: Gets a boolean value that indicates whether the name is available for you to use.
+ * If true, the name is available. If false, the name has already been taken or is invalid and cannot be used.
+ *
+ * @return the nameAvailable value.
+ */
+ public Boolean nameAvailable() {
+ return this.nameAvailable;
+ }
+
+ /**
+ * Get the reason property: Gets the reason that a storage account name could not be used. The Reason element is
+ * only returned if NameAvailable is false.
+ *
+ * @return the reason value.
+ */
+ public Reason reason() {
+ return this.reason;
+ }
+
+ /**
+ * Get the message property: Gets an error message explaining the Reason value in more detail.
+ *
+ * @return the message value.
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/DeletedAccountInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/DeletedAccountInner.java
new file mode 100644
index 0000000000000..451f858f4c9ef
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/DeletedAccountInner.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.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Deleted storage account. */
+@JsonFlatten
+@Immutable
+public class DeletedAccountInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(DeletedAccountInner.class);
+
+ /*
+ * Full resource id of the original storage account.
+ */
+ @JsonProperty(value = "properties.storageAccountResourceId", access = JsonProperty.Access.WRITE_ONLY)
+ private String storageAccountResourceId;
+
+ /*
+ * Location of the deleted account.
+ */
+ @JsonProperty(value = "properties.location", access = JsonProperty.Access.WRITE_ONLY)
+ private String location;
+
+ /*
+ * Can be used to attempt recovering this deleted account via
+ * PutStorageAccount API.
+ */
+ @JsonProperty(value = "properties.restoreReference", access = JsonProperty.Access.WRITE_ONLY)
+ private String restoreReference;
+
+ /*
+ * Creation time of the deleted account.
+ */
+ @JsonProperty(value = "properties.creationTime", access = JsonProperty.Access.WRITE_ONLY)
+ private String creationTime;
+
+ /*
+ * Deletion time of the deleted account.
+ */
+ @JsonProperty(value = "properties.deletionTime", access = JsonProperty.Access.WRITE_ONLY)
+ private String deletionTime;
+
+ /**
+ * Get the storageAccountResourceId property: Full resource id of the original storage account.
+ *
+ * @return the storageAccountResourceId value.
+ */
+ public String storageAccountResourceId() {
+ return this.storageAccountResourceId;
+ }
+
+ /**
+ * Get the location property: Location of the deleted account.
+ *
+ * @return the location value.
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Get the restoreReference property: Can be used to attempt recovering this deleted account via PutStorageAccount
+ * API.
+ *
+ * @return the restoreReference value.
+ */
+ public String restoreReference() {
+ return this.restoreReference;
+ }
+
+ /**
+ * Get the creationTime property: Creation time of the deleted account.
+ *
+ * @return the creationTime value.
+ */
+ public String creationTime() {
+ return this.creationTime;
+ }
+
+ /**
+ * Get the deletionTime property: Deletion time of the deleted account.
+ *
+ * @return the deletionTime value.
+ */
+ public String deletionTime() {
+ return this.deletionTime;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/EncryptionScopeInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/EncryptionScopeInner.java
new file mode 100644
index 0000000000000..73364610b236d
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/EncryptionScopeInner.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.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeKeyVaultProperties;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeSource;
+import com.azure.resourcemanager.storage.generated.models.EncryptionScopeState;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+
+/** The Encryption Scope resource. */
+@JsonFlatten
+@Fluent
+public class EncryptionScopeInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(EncryptionScopeInner.class);
+
+ /*
+ * The provider for the encryption scope. Possible values
+ * (case-insensitive): Microsoft.Storage, Microsoft.KeyVault.
+ */
+ @JsonProperty(value = "properties.source")
+ private EncryptionScopeSource source;
+
+ /*
+ * The state of the encryption scope. Possible values (case-insensitive):
+ * Enabled, Disabled.
+ */
+ @JsonProperty(value = "properties.state")
+ private EncryptionScopeState state;
+
+ /*
+ * Gets the creation date and time of the encryption scope in UTC.
+ */
+ @JsonProperty(value = "properties.creationTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime creationTime;
+
+ /*
+ * Gets the last modification date and time of the encryption scope in UTC.
+ */
+ @JsonProperty(value = "properties.lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * The key vault properties for the encryption scope. This is a required
+ * field if encryption scope 'source' attribute is set to
+ * 'Microsoft.KeyVault'.
+ */
+ @JsonProperty(value = "properties.keyVaultProperties")
+ private EncryptionScopeKeyVaultProperties keyVaultProperties;
+
+ /*
+ * A boolean indicating whether or not the service applies a secondary
+ * layer of encryption with platform managed keys for data at rest.
+ */
+ @JsonProperty(value = "properties.requireInfrastructureEncryption")
+ private Boolean requireInfrastructureEncryption;
+
+ /**
+ * Get the source property: The provider for the encryption scope. Possible values (case-insensitive):
+ * Microsoft.Storage, Microsoft.KeyVault.
+ *
+ * @return the source value.
+ */
+ public EncryptionScopeSource source() {
+ return this.source;
+ }
+
+ /**
+ * Set the source property: The provider for the encryption scope. Possible values (case-insensitive):
+ * Microsoft.Storage, Microsoft.KeyVault.
+ *
+ * @param source the source value to set.
+ * @return the EncryptionScopeInner object itself.
+ */
+ public EncryptionScopeInner withSource(EncryptionScopeSource source) {
+ this.source = source;
+ return this;
+ }
+
+ /**
+ * Get the state property: The state of the encryption scope. Possible values (case-insensitive): Enabled, Disabled.
+ *
+ * @return the state value.
+ */
+ public EncryptionScopeState state() {
+ return this.state;
+ }
+
+ /**
+ * Set the state property: The state of the encryption scope. Possible values (case-insensitive): Enabled, Disabled.
+ *
+ * @param state the state value to set.
+ * @return the EncryptionScopeInner object itself.
+ */
+ public EncryptionScopeInner withState(EncryptionScopeState state) {
+ this.state = state;
+ return this;
+ }
+
+ /**
+ * Get the creationTime property: Gets the creation date and time of the encryption scope in UTC.
+ *
+ * @return the creationTime value.
+ */
+ public OffsetDateTime creationTime() {
+ return this.creationTime;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Gets the last modification date and time of the encryption scope in UTC.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the keyVaultProperties property: The key vault properties for the encryption scope. This is a required field
+ * if encryption scope 'source' attribute is set to 'Microsoft.KeyVault'.
+ *
+ * @return the keyVaultProperties value.
+ */
+ public EncryptionScopeKeyVaultProperties keyVaultProperties() {
+ return this.keyVaultProperties;
+ }
+
+ /**
+ * Set the keyVaultProperties property: The key vault properties for the encryption scope. This is a required field
+ * if encryption scope 'source' attribute is set to 'Microsoft.KeyVault'.
+ *
+ * @param keyVaultProperties the keyVaultProperties value to set.
+ * @return the EncryptionScopeInner object itself.
+ */
+ public EncryptionScopeInner withKeyVaultProperties(EncryptionScopeKeyVaultProperties keyVaultProperties) {
+ this.keyVaultProperties = keyVaultProperties;
+ return this;
+ }
+
+ /**
+ * Get the requireInfrastructureEncryption property: A boolean indicating whether or not the service applies a
+ * secondary layer of encryption with platform managed keys for data at rest.
+ *
+ * @return the requireInfrastructureEncryption value.
+ */
+ public Boolean requireInfrastructureEncryption() {
+ return this.requireInfrastructureEncryption;
+ }
+
+ /**
+ * Set the requireInfrastructureEncryption property: A boolean indicating whether or not the service applies a
+ * secondary layer of encryption with platform managed keys for data at rest.
+ *
+ * @param requireInfrastructureEncryption the requireInfrastructureEncryption value to set.
+ * @return the EncryptionScopeInner object itself.
+ */
+ public EncryptionScopeInner withRequireInfrastructureEncryption(Boolean requireInfrastructureEncryption) {
+ this.requireInfrastructureEncryption = requireInfrastructureEncryption;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (keyVaultProperties() != null) {
+ keyVaultProperties().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServiceItemsInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServiceItemsInner.java
new file mode 100644
index 0000000000000..d9c4f2994bab7
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServiceItemsInner.java
@@ -0,0 +1,43 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The FileServiceItems model. */
+@Immutable
+public final class FileServiceItemsInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(FileServiceItemsInner.class);
+
+ /*
+ * List of file services returned.
+ */
+ @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY)
+ private List value;
+
+ /**
+ * Get the value property: List of file services returned.
+ *
+ * @return the value value.
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (value() != null) {
+ value().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServicePropertiesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServicePropertiesInner.java
new file mode 100644
index 0000000000000..0971977d7a414
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileServicePropertiesInner.java
@@ -0,0 +1,143 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.CorsRules;
+import com.azure.resourcemanager.storage.generated.models.DeleteRetentionPolicy;
+import com.azure.resourcemanager.storage.generated.models.ProtocolSettings;
+import com.azure.resourcemanager.storage.generated.models.Sku;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of File services in storage account. */
+@JsonFlatten
+@Fluent
+public class FileServicePropertiesInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(FileServicePropertiesInner.class);
+
+ /*
+ * Sku name and tier.
+ */
+ @JsonProperty(value = "sku", access = JsonProperty.Access.WRITE_ONLY)
+ private Sku sku;
+
+ /*
+ * Specifies CORS rules for the File service. You can include up to five
+ * CorsRule elements in the request. If no CorsRule elements are included
+ * in the request body, all CORS rules will be deleted, and CORS will be
+ * disabled for the File service.
+ */
+ @JsonProperty(value = "properties.cors")
+ private CorsRules cors;
+
+ /*
+ * The file service properties for share soft delete.
+ */
+ @JsonProperty(value = "properties.shareDeleteRetentionPolicy")
+ private DeleteRetentionPolicy shareDeleteRetentionPolicy;
+
+ /*
+ * Protocol settings for file service
+ */
+ @JsonProperty(value = "properties.protocolSettings")
+ private ProtocolSettings protocolSettings;
+
+ /**
+ * Get the sku property: Sku name and tier.
+ *
+ * @return the sku value.
+ */
+ public Sku sku() {
+ return this.sku;
+ }
+
+ /**
+ * Get the cors property: Specifies CORS rules for the File service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the File service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.cors;
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the File service. You can include up to five CorsRule elements in
+ * the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS
+ * will be disabled for the File service.
+ *
+ * @param cors the cors value to set.
+ * @return the FileServicePropertiesInner object itself.
+ */
+ public FileServicePropertiesInner withCors(CorsRules cors) {
+ this.cors = cors;
+ return this;
+ }
+
+ /**
+ * Get the shareDeleteRetentionPolicy property: The file service properties for share soft delete.
+ *
+ * @return the shareDeleteRetentionPolicy value.
+ */
+ public DeleteRetentionPolicy shareDeleteRetentionPolicy() {
+ return this.shareDeleteRetentionPolicy;
+ }
+
+ /**
+ * Set the shareDeleteRetentionPolicy property: The file service properties for share soft delete.
+ *
+ * @param shareDeleteRetentionPolicy the shareDeleteRetentionPolicy value to set.
+ * @return the FileServicePropertiesInner object itself.
+ */
+ public FileServicePropertiesInner withShareDeleteRetentionPolicy(DeleteRetentionPolicy shareDeleteRetentionPolicy) {
+ this.shareDeleteRetentionPolicy = shareDeleteRetentionPolicy;
+ return this;
+ }
+
+ /**
+ * Get the protocolSettings property: Protocol settings for file service.
+ *
+ * @return the protocolSettings value.
+ */
+ public ProtocolSettings protocolSettings() {
+ return this.protocolSettings;
+ }
+
+ /**
+ * Set the protocolSettings property: Protocol settings for file service.
+ *
+ * @param protocolSettings the protocolSettings value to set.
+ * @return the FileServicePropertiesInner object itself.
+ */
+ public FileServicePropertiesInner withProtocolSettings(ProtocolSettings protocolSettings) {
+ this.protocolSettings = protocolSettings;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (sku() != null) {
+ sku().validate();
+ }
+ if (cors() != null) {
+ cors().validate();
+ }
+ if (shareDeleteRetentionPolicy() != null) {
+ shareDeleteRetentionPolicy().validate();
+ }
+ if (protocolSettings() != null) {
+ protocolSettings().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareInner.java
new file mode 100644
index 0000000000000..0b4c0ffc2193a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareInner.java
@@ -0,0 +1,395 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.EnabledProtocols;
+import com.azure.resourcemanager.storage.generated.models.LeaseDuration;
+import com.azure.resourcemanager.storage.generated.models.LeaseState;
+import com.azure.resourcemanager.storage.generated.models.LeaseStatus;
+import com.azure.resourcemanager.storage.generated.models.RootSquashType;
+import com.azure.resourcemanager.storage.generated.models.ShareAccessTier;
+import com.azure.resourcemanager.storage.generated.models.SignedIdentifier;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** Properties of the file share, including Id, resource name, resource type, Etag. */
+@JsonFlatten
+@Fluent
+public class FileShareInner extends AzureEntityResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(FileShareInner.class);
+
+ /*
+ * Returns the date and time the share was last modified.
+ */
+ @JsonProperty(value = "properties.lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * A name-value pair to associate with the share as metadata.
+ */
+ @JsonProperty(value = "properties.metadata")
+ private Map metadata;
+
+ /*
+ * The maximum size of the share, in gigabytes. Must be greater than 0, and
+ * less than or equal to 5TB (5120). For Large File Shares, the maximum
+ * size is 102400.
+ */
+ @JsonProperty(value = "properties.shareQuota")
+ private Integer shareQuota;
+
+ /*
+ * The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ */
+ @JsonProperty(value = "properties.enabledProtocols")
+ private EnabledProtocols enabledProtocols;
+
+ /*
+ * The property is for NFS share only. The default is NoRootSquash.
+ */
+ @JsonProperty(value = "properties.rootSquash")
+ private RootSquashType rootSquash;
+
+ /*
+ * The version of the share.
+ */
+ @JsonProperty(value = "properties.version", access = JsonProperty.Access.WRITE_ONLY)
+ private String version;
+
+ /*
+ * Indicates whether the share was deleted.
+ */
+ @JsonProperty(value = "properties.deleted", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean deleted;
+
+ /*
+ * The deleted time if the share was deleted.
+ */
+ @JsonProperty(value = "properties.deletedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime deletedTime;
+
+ /*
+ * Remaining retention days for share that was soft deleted.
+ */
+ @JsonProperty(value = "properties.remainingRetentionDays", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer remainingRetentionDays;
+
+ /*
+ * Access tier for specific share. GpV2 account can choose between
+ * TransactionOptimized (default), Hot, and Cool. FileStorage account can
+ * choose Premium.
+ */
+ @JsonProperty(value = "properties.accessTier")
+ private ShareAccessTier accessTier;
+
+ /*
+ * Indicates the last modification time for share access tier.
+ */
+ @JsonProperty(value = "properties.accessTierChangeTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime accessTierChangeTime;
+
+ /*
+ * Indicates if there is a pending transition for access tier.
+ */
+ @JsonProperty(value = "properties.accessTierStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private String accessTierStatus;
+
+ /*
+ * The approximate size of the data stored on the share. Note that this
+ * value may not include all recently created or recently resized files.
+ */
+ @JsonProperty(value = "properties.shareUsageBytes", access = JsonProperty.Access.WRITE_ONLY)
+ private Long shareUsageBytes;
+
+ /*
+ * The lease status of the share.
+ */
+ @JsonProperty(value = "properties.leaseStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseStatus leaseStatus;
+
+ /*
+ * Lease state of the share.
+ */
+ @JsonProperty(value = "properties.leaseState", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseState leaseState;
+
+ /*
+ * Specifies whether the lease on a share is of infinite or fixed duration,
+ * only when the share is leased.
+ */
+ @JsonProperty(value = "properties.leaseDuration", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseDuration leaseDuration;
+
+ /*
+ * List of stored access policies specified on the share.
+ */
+ @JsonProperty(value = "properties.signedIdentifiers")
+ private List signedIdentifiers;
+
+ /*
+ * Creation time of share snapshot returned in the response of list shares
+ * with expand param "snapshots".
+ */
+ @JsonProperty(value = "properties.snapshotTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime snapshotTime;
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the share was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the metadata property: A name-value pair to associate with the share as metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.metadata;
+ }
+
+ /**
+ * Set the metadata property: A name-value pair to associate with the share as metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Get the shareQuota property: The maximum size of the share, in gigabytes. Must be greater than 0, and less than
+ * or equal to 5TB (5120). For Large File Shares, the maximum size is 102400.
+ *
+ * @return the shareQuota value.
+ */
+ public Integer shareQuota() {
+ return this.shareQuota;
+ }
+
+ /**
+ * Set the shareQuota property: The maximum size of the share, in gigabytes. Must be greater than 0, and less than
+ * or equal to 5TB (5120). For Large File Shares, the maximum size is 102400.
+ *
+ * @param shareQuota the shareQuota value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withShareQuota(Integer shareQuota) {
+ this.shareQuota = shareQuota;
+ return this;
+ }
+
+ /**
+ * Get the enabledProtocols property: The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ *
+ * @return the enabledProtocols value.
+ */
+ public EnabledProtocols enabledProtocols() {
+ return this.enabledProtocols;
+ }
+
+ /**
+ * Set the enabledProtocols property: The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ *
+ * @param enabledProtocols the enabledProtocols value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withEnabledProtocols(EnabledProtocols enabledProtocols) {
+ this.enabledProtocols = enabledProtocols;
+ return this;
+ }
+
+ /**
+ * Get the rootSquash property: The property is for NFS share only. The default is NoRootSquash.
+ *
+ * @return the rootSquash value.
+ */
+ public RootSquashType rootSquash() {
+ return this.rootSquash;
+ }
+
+ /**
+ * Set the rootSquash property: The property is for NFS share only. The default is NoRootSquash.
+ *
+ * @param rootSquash the rootSquash value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withRootSquash(RootSquashType rootSquash) {
+ this.rootSquash = rootSquash;
+ return this;
+ }
+
+ /**
+ * Get the version property: The version of the share.
+ *
+ * @return the version value.
+ */
+ public String version() {
+ return this.version;
+ }
+
+ /**
+ * Get the deleted property: Indicates whether the share was deleted.
+ *
+ * @return the deleted value.
+ */
+ public Boolean deleted() {
+ return this.deleted;
+ }
+
+ /**
+ * Get the deletedTime property: The deleted time if the share was deleted.
+ *
+ * @return the deletedTime value.
+ */
+ public OffsetDateTime deletedTime() {
+ return this.deletedTime;
+ }
+
+ /**
+ * Get the remainingRetentionDays property: Remaining retention days for share that was soft deleted.
+ *
+ * @return the remainingRetentionDays value.
+ */
+ public Integer remainingRetentionDays() {
+ return this.remainingRetentionDays;
+ }
+
+ /**
+ * Get the accessTier property: Access tier for specific share. GpV2 account can choose between TransactionOptimized
+ * (default), Hot, and Cool. FileStorage account can choose Premium.
+ *
+ * @return the accessTier value.
+ */
+ public ShareAccessTier accessTier() {
+ return this.accessTier;
+ }
+
+ /**
+ * Set the accessTier property: Access tier for specific share. GpV2 account can choose between TransactionOptimized
+ * (default), Hot, and Cool. FileStorage account can choose Premium.
+ *
+ * @param accessTier the accessTier value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withAccessTier(ShareAccessTier accessTier) {
+ this.accessTier = accessTier;
+ return this;
+ }
+
+ /**
+ * Get the accessTierChangeTime property: Indicates the last modification time for share access tier.
+ *
+ * @return the accessTierChangeTime value.
+ */
+ public OffsetDateTime accessTierChangeTime() {
+ return this.accessTierChangeTime;
+ }
+
+ /**
+ * Get the accessTierStatus property: Indicates if there is a pending transition for access tier.
+ *
+ * @return the accessTierStatus value.
+ */
+ public String accessTierStatus() {
+ return this.accessTierStatus;
+ }
+
+ /**
+ * Get the shareUsageBytes property: The approximate size of the data stored on the share. Note that this value may
+ * not include all recently created or recently resized files.
+ *
+ * @return the shareUsageBytes value.
+ */
+ public Long shareUsageBytes() {
+ return this.shareUsageBytes;
+ }
+
+ /**
+ * Get the leaseStatus property: The lease status of the share.
+ *
+ * @return the leaseStatus value.
+ */
+ public LeaseStatus leaseStatus() {
+ return this.leaseStatus;
+ }
+
+ /**
+ * Get the leaseState property: Lease state of the share.
+ *
+ * @return the leaseState value.
+ */
+ public LeaseState leaseState() {
+ return this.leaseState;
+ }
+
+ /**
+ * Get the leaseDuration property: Specifies whether the lease on a share is of infinite or fixed duration, only
+ * when the share is leased.
+ *
+ * @return the leaseDuration value.
+ */
+ public LeaseDuration leaseDuration() {
+ return this.leaseDuration;
+ }
+
+ /**
+ * Get the signedIdentifiers property: List of stored access policies specified on the share.
+ *
+ * @return the signedIdentifiers value.
+ */
+ public List signedIdentifiers() {
+ return this.signedIdentifiers;
+ }
+
+ /**
+ * Set the signedIdentifiers property: List of stored access policies specified on the share.
+ *
+ * @param signedIdentifiers the signedIdentifiers value to set.
+ * @return the FileShareInner object itself.
+ */
+ public FileShareInner withSignedIdentifiers(List signedIdentifiers) {
+ this.signedIdentifiers = signedIdentifiers;
+ return this;
+ }
+
+ /**
+ * Get the snapshotTime property: Creation time of share snapshot returned in the response of list shares with
+ * expand param "snapshots".
+ *
+ * @return the snapshotTime value.
+ */
+ public OffsetDateTime snapshotTime() {
+ return this.snapshotTime;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ super.validate();
+ if (signedIdentifiers() != null) {
+ signedIdentifiers().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareItemInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareItemInner.java
new file mode 100644
index 0000000000000..17219638fbd17
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/FileShareItemInner.java
@@ -0,0 +1,395 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.EnabledProtocols;
+import com.azure.resourcemanager.storage.generated.models.LeaseDuration;
+import com.azure.resourcemanager.storage.generated.models.LeaseState;
+import com.azure.resourcemanager.storage.generated.models.LeaseStatus;
+import com.azure.resourcemanager.storage.generated.models.RootSquashType;
+import com.azure.resourcemanager.storage.generated.models.ShareAccessTier;
+import com.azure.resourcemanager.storage.generated.models.SignedIdentifier;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** The file share properties be listed out. */
+@JsonFlatten
+@Fluent
+public class FileShareItemInner extends AzureEntityResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(FileShareItemInner.class);
+
+ /*
+ * Returns the date and time the share was last modified.
+ */
+ @JsonProperty(value = "properties.lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * A name-value pair to associate with the share as metadata.
+ */
+ @JsonProperty(value = "properties.metadata")
+ private Map metadata;
+
+ /*
+ * The maximum size of the share, in gigabytes. Must be greater than 0, and
+ * less than or equal to 5TB (5120). For Large File Shares, the maximum
+ * size is 102400.
+ */
+ @JsonProperty(value = "properties.shareQuota")
+ private Integer shareQuota;
+
+ /*
+ * The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ */
+ @JsonProperty(value = "properties.enabledProtocols")
+ private EnabledProtocols enabledProtocols;
+
+ /*
+ * The property is for NFS share only. The default is NoRootSquash.
+ */
+ @JsonProperty(value = "properties.rootSquash")
+ private RootSquashType rootSquash;
+
+ /*
+ * The version of the share.
+ */
+ @JsonProperty(value = "properties.version", access = JsonProperty.Access.WRITE_ONLY)
+ private String version;
+
+ /*
+ * Indicates whether the share was deleted.
+ */
+ @JsonProperty(value = "properties.deleted", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean deleted;
+
+ /*
+ * The deleted time if the share was deleted.
+ */
+ @JsonProperty(value = "properties.deletedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime deletedTime;
+
+ /*
+ * Remaining retention days for share that was soft deleted.
+ */
+ @JsonProperty(value = "properties.remainingRetentionDays", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer remainingRetentionDays;
+
+ /*
+ * Access tier for specific share. GpV2 account can choose between
+ * TransactionOptimized (default), Hot, and Cool. FileStorage account can
+ * choose Premium.
+ */
+ @JsonProperty(value = "properties.accessTier")
+ private ShareAccessTier accessTier;
+
+ /*
+ * Indicates the last modification time for share access tier.
+ */
+ @JsonProperty(value = "properties.accessTierChangeTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime accessTierChangeTime;
+
+ /*
+ * Indicates if there is a pending transition for access tier.
+ */
+ @JsonProperty(value = "properties.accessTierStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private String accessTierStatus;
+
+ /*
+ * The approximate size of the data stored on the share. Note that this
+ * value may not include all recently created or recently resized files.
+ */
+ @JsonProperty(value = "properties.shareUsageBytes", access = JsonProperty.Access.WRITE_ONLY)
+ private Long shareUsageBytes;
+
+ /*
+ * The lease status of the share.
+ */
+ @JsonProperty(value = "properties.leaseStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseStatus leaseStatus;
+
+ /*
+ * Lease state of the share.
+ */
+ @JsonProperty(value = "properties.leaseState", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseState leaseState;
+
+ /*
+ * Specifies whether the lease on a share is of infinite or fixed duration,
+ * only when the share is leased.
+ */
+ @JsonProperty(value = "properties.leaseDuration", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseDuration leaseDuration;
+
+ /*
+ * List of stored access policies specified on the share.
+ */
+ @JsonProperty(value = "properties.signedIdentifiers")
+ private List signedIdentifiers;
+
+ /*
+ * Creation time of share snapshot returned in the response of list shares
+ * with expand param "snapshots".
+ */
+ @JsonProperty(value = "properties.snapshotTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime snapshotTime;
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the share was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the metadata property: A name-value pair to associate with the share as metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.metadata;
+ }
+
+ /**
+ * Set the metadata property: A name-value pair to associate with the share as metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Get the shareQuota property: The maximum size of the share, in gigabytes. Must be greater than 0, and less than
+ * or equal to 5TB (5120). For Large File Shares, the maximum size is 102400.
+ *
+ * @return the shareQuota value.
+ */
+ public Integer shareQuota() {
+ return this.shareQuota;
+ }
+
+ /**
+ * Set the shareQuota property: The maximum size of the share, in gigabytes. Must be greater than 0, and less than
+ * or equal to 5TB (5120). For Large File Shares, the maximum size is 102400.
+ *
+ * @param shareQuota the shareQuota value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withShareQuota(Integer shareQuota) {
+ this.shareQuota = shareQuota;
+ return this;
+ }
+
+ /**
+ * Get the enabledProtocols property: The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ *
+ * @return the enabledProtocols value.
+ */
+ public EnabledProtocols enabledProtocols() {
+ return this.enabledProtocols;
+ }
+
+ /**
+ * Set the enabledProtocols property: The authentication protocol that is used for the file share. Can only be
+ * specified when creating a share.
+ *
+ * @param enabledProtocols the enabledProtocols value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withEnabledProtocols(EnabledProtocols enabledProtocols) {
+ this.enabledProtocols = enabledProtocols;
+ return this;
+ }
+
+ /**
+ * Get the rootSquash property: The property is for NFS share only. The default is NoRootSquash.
+ *
+ * @return the rootSquash value.
+ */
+ public RootSquashType rootSquash() {
+ return this.rootSquash;
+ }
+
+ /**
+ * Set the rootSquash property: The property is for NFS share only. The default is NoRootSquash.
+ *
+ * @param rootSquash the rootSquash value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withRootSquash(RootSquashType rootSquash) {
+ this.rootSquash = rootSquash;
+ return this;
+ }
+
+ /**
+ * Get the version property: The version of the share.
+ *
+ * @return the version value.
+ */
+ public String version() {
+ return this.version;
+ }
+
+ /**
+ * Get the deleted property: Indicates whether the share was deleted.
+ *
+ * @return the deleted value.
+ */
+ public Boolean deleted() {
+ return this.deleted;
+ }
+
+ /**
+ * Get the deletedTime property: The deleted time if the share was deleted.
+ *
+ * @return the deletedTime value.
+ */
+ public OffsetDateTime deletedTime() {
+ return this.deletedTime;
+ }
+
+ /**
+ * Get the remainingRetentionDays property: Remaining retention days for share that was soft deleted.
+ *
+ * @return the remainingRetentionDays value.
+ */
+ public Integer remainingRetentionDays() {
+ return this.remainingRetentionDays;
+ }
+
+ /**
+ * Get the accessTier property: Access tier for specific share. GpV2 account can choose between TransactionOptimized
+ * (default), Hot, and Cool. FileStorage account can choose Premium.
+ *
+ * @return the accessTier value.
+ */
+ public ShareAccessTier accessTier() {
+ return this.accessTier;
+ }
+
+ /**
+ * Set the accessTier property: Access tier for specific share. GpV2 account can choose between TransactionOptimized
+ * (default), Hot, and Cool. FileStorage account can choose Premium.
+ *
+ * @param accessTier the accessTier value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withAccessTier(ShareAccessTier accessTier) {
+ this.accessTier = accessTier;
+ return this;
+ }
+
+ /**
+ * Get the accessTierChangeTime property: Indicates the last modification time for share access tier.
+ *
+ * @return the accessTierChangeTime value.
+ */
+ public OffsetDateTime accessTierChangeTime() {
+ return this.accessTierChangeTime;
+ }
+
+ /**
+ * Get the accessTierStatus property: Indicates if there is a pending transition for access tier.
+ *
+ * @return the accessTierStatus value.
+ */
+ public String accessTierStatus() {
+ return this.accessTierStatus;
+ }
+
+ /**
+ * Get the shareUsageBytes property: The approximate size of the data stored on the share. Note that this value may
+ * not include all recently created or recently resized files.
+ *
+ * @return the shareUsageBytes value.
+ */
+ public Long shareUsageBytes() {
+ return this.shareUsageBytes;
+ }
+
+ /**
+ * Get the leaseStatus property: The lease status of the share.
+ *
+ * @return the leaseStatus value.
+ */
+ public LeaseStatus leaseStatus() {
+ return this.leaseStatus;
+ }
+
+ /**
+ * Get the leaseState property: Lease state of the share.
+ *
+ * @return the leaseState value.
+ */
+ public LeaseState leaseState() {
+ return this.leaseState;
+ }
+
+ /**
+ * Get the leaseDuration property: Specifies whether the lease on a share is of infinite or fixed duration, only
+ * when the share is leased.
+ *
+ * @return the leaseDuration value.
+ */
+ public LeaseDuration leaseDuration() {
+ return this.leaseDuration;
+ }
+
+ /**
+ * Get the signedIdentifiers property: List of stored access policies specified on the share.
+ *
+ * @return the signedIdentifiers value.
+ */
+ public List signedIdentifiers() {
+ return this.signedIdentifiers;
+ }
+
+ /**
+ * Set the signedIdentifiers property: List of stored access policies specified on the share.
+ *
+ * @param signedIdentifiers the signedIdentifiers value to set.
+ * @return the FileShareItemInner object itself.
+ */
+ public FileShareItemInner withSignedIdentifiers(List signedIdentifiers) {
+ this.signedIdentifiers = signedIdentifiers;
+ return this;
+ }
+
+ /**
+ * Get the snapshotTime property: Creation time of share snapshot returned in the response of list shares with
+ * expand param "snapshots".
+ *
+ * @return the snapshotTime value.
+ */
+ public OffsetDateTime snapshotTime() {
+ return this.snapshotTime;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ super.validate();
+ if (signedIdentifiers() != null) {
+ signedIdentifiers().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ImmutabilityPolicyInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ImmutabilityPolicyInner.java
new file mode 100644
index 0000000000000..ab3d510848a6e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ImmutabilityPolicyInner.java
@@ -0,0 +1,114 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyState;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag. */
+@JsonFlatten
+@Fluent
+public class ImmutabilityPolicyInner extends AzureEntityResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ImmutabilityPolicyInner.class);
+
+ /*
+ * The immutability period for the blobs in the container since the policy
+ * creation, in days.
+ */
+ @JsonProperty(value = "properties.immutabilityPeriodSinceCreationInDays")
+ private Integer immutabilityPeriodSinceCreationInDays;
+
+ /*
+ * The ImmutabilityPolicy state of a blob container, possible values
+ * include: Locked and Unlocked.
+ */
+ @JsonProperty(value = "properties.state", access = JsonProperty.Access.WRITE_ONLY)
+ private ImmutabilityPolicyState state;
+
+ /*
+ * This property can only be changed for unlocked time-based retention
+ * policies. When enabled, new blocks can be written to an append blob
+ * while maintaining immutability protection and compliance. Only new
+ * blocks can be added and any existing blocks cannot be modified or
+ * deleted. This property cannot be changed with ExtendImmutabilityPolicy
+ * API
+ */
+ @JsonProperty(value = "properties.allowProtectedAppendWrites")
+ private Boolean allowProtectedAppendWrites;
+
+ /**
+ * Get the immutabilityPeriodSinceCreationInDays property: The immutability period for the blobs in the container
+ * since the policy creation, in days.
+ *
+ * @return the immutabilityPeriodSinceCreationInDays value.
+ */
+ public Integer immutabilityPeriodSinceCreationInDays() {
+ return this.immutabilityPeriodSinceCreationInDays;
+ }
+
+ /**
+ * Set the immutabilityPeriodSinceCreationInDays property: The immutability period for the blobs in the container
+ * since the policy creation, in days.
+ *
+ * @param immutabilityPeriodSinceCreationInDays the immutabilityPeriodSinceCreationInDays value to set.
+ * @return the ImmutabilityPolicyInner object itself.
+ */
+ public ImmutabilityPolicyInner withImmutabilityPeriodSinceCreationInDays(
+ Integer immutabilityPeriodSinceCreationInDays) {
+ this.immutabilityPeriodSinceCreationInDays = immutabilityPeriodSinceCreationInDays;
+ return this;
+ }
+
+ /**
+ * Get the state property: The ImmutabilityPolicy state of a blob container, possible values include: Locked and
+ * Unlocked.
+ *
+ * @return the state value.
+ */
+ public ImmutabilityPolicyState state() {
+ return this.state;
+ }
+
+ /**
+ * Get the allowProtectedAppendWrites property: This property can only be changed for unlocked time-based retention
+ * policies. When enabled, new blocks can be written to an append blob while maintaining immutability protection and
+ * compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property
+ * cannot be changed with ExtendImmutabilityPolicy API.
+ *
+ * @return the allowProtectedAppendWrites value.
+ */
+ public Boolean allowProtectedAppendWrites() {
+ return this.allowProtectedAppendWrites;
+ }
+
+ /**
+ * Set the allowProtectedAppendWrites property: This property can only be changed for unlocked time-based retention
+ * policies. When enabled, new blocks can be written to an append blob while maintaining immutability protection and
+ * compliance. Only new blocks can be added and any existing blocks cannot be modified or deleted. This property
+ * cannot be changed with ExtendImmutabilityPolicy API.
+ *
+ * @param allowProtectedAppendWrites the allowProtectedAppendWrites value to set.
+ * @return the ImmutabilityPolicyInner object itself.
+ */
+ public ImmutabilityPolicyInner withAllowProtectedAppendWrites(Boolean allowProtectedAppendWrites) {
+ this.allowProtectedAppendWrites = allowProtectedAppendWrites;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ super.validate();
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseContainerResponseInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseContainerResponseInner.java
new file mode 100644
index 0000000000000..c8f7180f2c204
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseContainerResponseInner.java
@@ -0,0 +1,79 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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;
+
+/** Lease Container response schema. */
+@Fluent
+public final class LeaseContainerResponseInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(LeaseContainerResponseInner.class);
+
+ /*
+ * Returned unique lease ID that must be included with any request to
+ * delete the container, or to renew, change, or release the lease.
+ */
+ @JsonProperty(value = "leaseId")
+ private String leaseId;
+
+ /*
+ * Approximate time remaining in the lease period, in seconds.
+ */
+ @JsonProperty(value = "leaseTimeSeconds")
+ private String leaseTimeSeconds;
+
+ /**
+ * Get the leaseId property: Returned unique lease ID that must be included with any request to delete the
+ * container, or to renew, change, or release the lease.
+ *
+ * @return the leaseId value.
+ */
+ public String leaseId() {
+ return this.leaseId;
+ }
+
+ /**
+ * Set the leaseId property: Returned unique lease ID that must be included with any request to delete the
+ * container, or to renew, change, or release the lease.
+ *
+ * @param leaseId the leaseId value to set.
+ * @return the LeaseContainerResponseInner object itself.
+ */
+ public LeaseContainerResponseInner withLeaseId(String leaseId) {
+ this.leaseId = leaseId;
+ return this;
+ }
+
+ /**
+ * Get the leaseTimeSeconds property: Approximate time remaining in the lease period, in seconds.
+ *
+ * @return the leaseTimeSeconds value.
+ */
+ public String leaseTimeSeconds() {
+ return this.leaseTimeSeconds;
+ }
+
+ /**
+ * Set the leaseTimeSeconds property: Approximate time remaining in the lease period, in seconds.
+ *
+ * @param leaseTimeSeconds the leaseTimeSeconds value to set.
+ * @return the LeaseContainerResponseInner object itself.
+ */
+ public LeaseContainerResponseInner withLeaseTimeSeconds(String leaseTimeSeconds) {
+ this.leaseTimeSeconds = leaseTimeSeconds;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseShareResponseInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseShareResponseInner.java
new file mode 100644
index 0000000000000..e2d5c8922d3e5
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LeaseShareResponseInner.java
@@ -0,0 +1,79 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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;
+
+/** Lease Share response schema. */
+@Fluent
+public final class LeaseShareResponseInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(LeaseShareResponseInner.class);
+
+ /*
+ * Returned unique lease ID that must be included with any request to
+ * delete the share, or to renew, change, or release the lease.
+ */
+ @JsonProperty(value = "leaseId")
+ private String leaseId;
+
+ /*
+ * Approximate time remaining in the lease period, in seconds.
+ */
+ @JsonProperty(value = "leaseTimeSeconds")
+ private String leaseTimeSeconds;
+
+ /**
+ * Get the leaseId property: Returned unique lease ID that must be included with any request to delete the share, or
+ * to renew, change, or release the lease.
+ *
+ * @return the leaseId value.
+ */
+ public String leaseId() {
+ return this.leaseId;
+ }
+
+ /**
+ * Set the leaseId property: Returned unique lease ID that must be included with any request to delete the share, or
+ * to renew, change, or release the lease.
+ *
+ * @param leaseId the leaseId value to set.
+ * @return the LeaseShareResponseInner object itself.
+ */
+ public LeaseShareResponseInner withLeaseId(String leaseId) {
+ this.leaseId = leaseId;
+ return this;
+ }
+
+ /**
+ * Get the leaseTimeSeconds property: Approximate time remaining in the lease period, in seconds.
+ *
+ * @return the leaseTimeSeconds value.
+ */
+ public String leaseTimeSeconds() {
+ return this.leaseTimeSeconds;
+ }
+
+ /**
+ * Set the leaseTimeSeconds property: Approximate time remaining in the lease period, in seconds.
+ *
+ * @param leaseTimeSeconds the leaseTimeSeconds value to set.
+ * @return the LeaseShareResponseInner object itself.
+ */
+ public LeaseShareResponseInner withLeaseTimeSeconds(String leaseTimeSeconds) {
+ this.leaseTimeSeconds = leaseTimeSeconds;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LegalHoldInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LegalHoldInner.java
new file mode 100644
index 0000000000000..e7f58313ba350
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/LegalHoldInner.java
@@ -0,0 +1,78 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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;
+import java.util.List;
+
+/** The LegalHold property of a blob container. */
+@Fluent
+public final class LegalHoldInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(LegalHoldInner.class);
+
+ /*
+ * The hasLegalHold public property is set to true by SRP if there are at
+ * least one existing tag. The hasLegalHold public property is set to false
+ * by SRP if all existing legal hold tags are cleared out. There can be a
+ * maximum of 1000 blob containers with hasLegalHold=true for a given
+ * account.
+ */
+ @JsonProperty(value = "hasLegalHold", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean hasLegalHold;
+
+ /*
+ * Each tag should be 3 to 23 alphanumeric characters and is normalized to
+ * lower case at SRP.
+ */
+ @JsonProperty(value = "tags", required = true)
+ private List tags;
+
+ /**
+ * Get the hasLegalHold property: The hasLegalHold public property is set to true by SRP if there are at least one
+ * existing tag. The hasLegalHold public property is set to false by SRP if all existing legal hold tags are cleared
+ * out. There can be a maximum of 1000 blob containers with hasLegalHold=true for a given account.
+ *
+ * @return the hasLegalHold value.
+ */
+ public Boolean hasLegalHold() {
+ return this.hasLegalHold;
+ }
+
+ /**
+ * Get the tags property: Each tag should be 3 to 23 alphanumeric characters and is normalized to lower case at SRP.
+ *
+ * @return the tags value.
+ */
+ public List tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set the tags property: Each tag should be 3 to 23 alphanumeric characters and is normalized to lower case at SRP.
+ *
+ * @param tags the tags value to set.
+ * @return the LegalHoldInner object itself.
+ */
+ public LegalHoldInner withTags(List tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (tags() == null) {
+ throw logger
+ .logExceptionAsError(
+ new IllegalArgumentException("Missing required property tags in model LegalHoldInner"));
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListAccountSasResponseInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListAccountSasResponseInner.java
new file mode 100644
index 0000000000000..ddbc3c7d14a3c
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListAccountSasResponseInner.java
@@ -0,0 +1,39 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The List SAS credentials operation response. */
+@Immutable
+public final class ListAccountSasResponseInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ListAccountSasResponseInner.class);
+
+ /*
+ * List SAS credentials of storage account.
+ */
+ @JsonProperty(value = "accountSasToken", access = JsonProperty.Access.WRITE_ONLY)
+ private String accountSasToken;
+
+ /**
+ * Get the accountSasToken property: List SAS credentials of storage account.
+ *
+ * @return the accountSasToken value.
+ */
+ public String accountSasToken() {
+ return this.accountSasToken;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListContainerItemInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListContainerItemInner.java
new file mode 100644
index 0000000000000..13c9929fe029a
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListContainerItemInner.java
@@ -0,0 +1,380 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.AzureEntityResource;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyProperties;
+import com.azure.resourcemanager.storage.generated.models.ImmutableStorageWithVersioning;
+import com.azure.resourcemanager.storage.generated.models.LeaseDuration;
+import com.azure.resourcemanager.storage.generated.models.LeaseState;
+import com.azure.resourcemanager.storage.generated.models.LeaseStatus;
+import com.azure.resourcemanager.storage.generated.models.LegalHoldProperties;
+import com.azure.resourcemanager.storage.generated.models.PublicAccess;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.Map;
+
+/** The blob container properties be listed out. */
+@JsonFlatten
+@Fluent
+public class ListContainerItemInner extends AzureEntityResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ListContainerItemInner.class);
+
+ /*
+ * The version of the deleted blob container.
+ */
+ @JsonProperty(value = "properties.version", access = JsonProperty.Access.WRITE_ONLY)
+ private String version;
+
+ /*
+ * Indicates whether the blob container was deleted.
+ */
+ @JsonProperty(value = "properties.deleted", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean deleted;
+
+ /*
+ * Blob container deletion time.
+ */
+ @JsonProperty(value = "properties.deletedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime deletedTime;
+
+ /*
+ * Remaining retention days for soft deleted blob container.
+ */
+ @JsonProperty(value = "properties.remainingRetentionDays", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer remainingRetentionDays;
+
+ /*
+ * Default the container to use specified encryption scope for all writes.
+ */
+ @JsonProperty(value = "properties.defaultEncryptionScope")
+ private String defaultEncryptionScope;
+
+ /*
+ * Block override of encryption scope from the container default.
+ */
+ @JsonProperty(value = "properties.denyEncryptionScopeOverride")
+ private Boolean denyEncryptionScopeOverride;
+
+ /*
+ * Specifies whether data in the container may be accessed publicly and the
+ * level of access.
+ */
+ @JsonProperty(value = "properties.publicAccess")
+ private PublicAccess publicAccess;
+
+ /*
+ * Returns the date and time the container was last modified.
+ */
+ @JsonProperty(value = "properties.lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * The lease status of the container.
+ */
+ @JsonProperty(value = "properties.leaseStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseStatus leaseStatus;
+
+ /*
+ * Lease state of the container.
+ */
+ @JsonProperty(value = "properties.leaseState", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseState leaseState;
+
+ /*
+ * Specifies whether the lease on a container is of infinite or fixed
+ * duration, only when the container is leased.
+ */
+ @JsonProperty(value = "properties.leaseDuration", access = JsonProperty.Access.WRITE_ONLY)
+ private LeaseDuration leaseDuration;
+
+ /*
+ * A name-value pair to associate with the container as metadata.
+ */
+ @JsonProperty(value = "properties.metadata")
+ private Map metadata;
+
+ /*
+ * The ImmutabilityPolicy property of the container.
+ */
+ @JsonProperty(value = "properties.immutabilityPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private ImmutabilityPolicyProperties immutabilityPolicy;
+
+ /*
+ * The LegalHold property of the container.
+ */
+ @JsonProperty(value = "properties.legalHold", access = JsonProperty.Access.WRITE_ONLY)
+ private LegalHoldProperties legalHold;
+
+ /*
+ * The hasLegalHold public property is set to true by SRP if there are at
+ * least one existing tag. The hasLegalHold public property is set to false
+ * by SRP if all existing legal hold tags are cleared out. There can be a
+ * maximum of 1000 blob containers with hasLegalHold=true for a given
+ * account.
+ */
+ @JsonProperty(value = "properties.hasLegalHold", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean hasLegalHold;
+
+ /*
+ * The hasImmutabilityPolicy public property is set to true by SRP if
+ * ImmutabilityPolicy has been created for this container. The
+ * hasImmutabilityPolicy public property is set to false by SRP if
+ * ImmutabilityPolicy has not been created for this container.
+ */
+ @JsonProperty(value = "properties.hasImmutabilityPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean hasImmutabilityPolicy;
+
+ /*
+ * The object level immutability property of the container. The property is
+ * immutable and can only be set to true at the container creation time.
+ * Existing containers must undergo a migration process.
+ */
+ @JsonProperty(value = "properties.immutableStorageWithVersioning")
+ private ImmutableStorageWithVersioning immutableStorageWithVersioning;
+
+ /**
+ * Get the version property: The version of the deleted blob container.
+ *
+ * @return the version value.
+ */
+ public String version() {
+ return this.version;
+ }
+
+ /**
+ * Get the deleted property: Indicates whether the blob container was deleted.
+ *
+ * @return the deleted value.
+ */
+ public Boolean deleted() {
+ return this.deleted;
+ }
+
+ /**
+ * Get the deletedTime property: Blob container deletion time.
+ *
+ * @return the deletedTime value.
+ */
+ public OffsetDateTime deletedTime() {
+ return this.deletedTime;
+ }
+
+ /**
+ * Get the remainingRetentionDays property: Remaining retention days for soft deleted blob container.
+ *
+ * @return the remainingRetentionDays value.
+ */
+ public Integer remainingRetentionDays() {
+ return this.remainingRetentionDays;
+ }
+
+ /**
+ * Get the defaultEncryptionScope property: Default the container to use specified encryption scope for all writes.
+ *
+ * @return the defaultEncryptionScope value.
+ */
+ public String defaultEncryptionScope() {
+ return this.defaultEncryptionScope;
+ }
+
+ /**
+ * Set the defaultEncryptionScope property: Default the container to use specified encryption scope for all writes.
+ *
+ * @param defaultEncryptionScope the defaultEncryptionScope value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner withDefaultEncryptionScope(String defaultEncryptionScope) {
+ this.defaultEncryptionScope = defaultEncryptionScope;
+ return this;
+ }
+
+ /**
+ * Get the denyEncryptionScopeOverride property: Block override of encryption scope from the container default.
+ *
+ * @return the denyEncryptionScopeOverride value.
+ */
+ public Boolean denyEncryptionScopeOverride() {
+ return this.denyEncryptionScopeOverride;
+ }
+
+ /**
+ * Set the denyEncryptionScopeOverride property: Block override of encryption scope from the container default.
+ *
+ * @param denyEncryptionScopeOverride the denyEncryptionScopeOverride value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner withDenyEncryptionScopeOverride(Boolean denyEncryptionScopeOverride) {
+ this.denyEncryptionScopeOverride = denyEncryptionScopeOverride;
+ return this;
+ }
+
+ /**
+ * Get the publicAccess property: Specifies whether data in the container may be accessed publicly and the level of
+ * access.
+ *
+ * @return the publicAccess value.
+ */
+ public PublicAccess publicAccess() {
+ return this.publicAccess;
+ }
+
+ /**
+ * Set the publicAccess property: Specifies whether data in the container may be accessed publicly and the level of
+ * access.
+ *
+ * @param publicAccess the publicAccess value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner withPublicAccess(PublicAccess publicAccess) {
+ this.publicAccess = publicAccess;
+ return this;
+ }
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the container was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the leaseStatus property: The lease status of the container.
+ *
+ * @return the leaseStatus value.
+ */
+ public LeaseStatus leaseStatus() {
+ return this.leaseStatus;
+ }
+
+ /**
+ * Get the leaseState property: Lease state of the container.
+ *
+ * @return the leaseState value.
+ */
+ public LeaseState leaseState() {
+ return this.leaseState;
+ }
+
+ /**
+ * Get the leaseDuration property: Specifies whether the lease on a container is of infinite or fixed duration, only
+ * when the container is leased.
+ *
+ * @return the leaseDuration value.
+ */
+ public LeaseDuration leaseDuration() {
+ return this.leaseDuration;
+ }
+
+ /**
+ * Get the metadata property: A name-value pair to associate with the container as metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.metadata;
+ }
+
+ /**
+ * Set the metadata property: A name-value pair to associate with the container as metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner withMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Get the immutabilityPolicy property: The ImmutabilityPolicy property of the container.
+ *
+ * @return the immutabilityPolicy value.
+ */
+ public ImmutabilityPolicyProperties immutabilityPolicy() {
+ return this.immutabilityPolicy;
+ }
+
+ /**
+ * Get the legalHold property: The LegalHold property of the container.
+ *
+ * @return the legalHold value.
+ */
+ public LegalHoldProperties legalHold() {
+ return this.legalHold;
+ }
+
+ /**
+ * Get the hasLegalHold property: The hasLegalHold public property is set to true by SRP if there are at least one
+ * existing tag. The hasLegalHold public property is set to false by SRP if all existing legal hold tags are cleared
+ * out. There can be a maximum of 1000 blob containers with hasLegalHold=true for a given account.
+ *
+ * @return the hasLegalHold value.
+ */
+ public Boolean hasLegalHold() {
+ return this.hasLegalHold;
+ }
+
+ /**
+ * Get the hasImmutabilityPolicy property: The hasImmutabilityPolicy public property is set to true by SRP if
+ * ImmutabilityPolicy has been created for this container. The hasImmutabilityPolicy public property is set to false
+ * by SRP if ImmutabilityPolicy has not been created for this container.
+ *
+ * @return the hasImmutabilityPolicy value.
+ */
+ public Boolean hasImmutabilityPolicy() {
+ return this.hasImmutabilityPolicy;
+ }
+
+ /**
+ * Get the immutableStorageWithVersioning property: The object level immutability property of the container. The
+ * property is immutable and can only be set to true at the container creation time. Existing containers must
+ * undergo a migration process.
+ *
+ * @return the immutableStorageWithVersioning value.
+ */
+ public ImmutableStorageWithVersioning immutableStorageWithVersioning() {
+ return this.immutableStorageWithVersioning;
+ }
+
+ /**
+ * Set the immutableStorageWithVersioning property: The object level immutability property of the container. The
+ * property is immutable and can only be set to true at the container creation time. Existing containers must
+ * undergo a migration process.
+ *
+ * @param immutableStorageWithVersioning the immutableStorageWithVersioning value to set.
+ * @return the ListContainerItemInner object itself.
+ */
+ public ListContainerItemInner withImmutableStorageWithVersioning(
+ ImmutableStorageWithVersioning immutableStorageWithVersioning) {
+ this.immutableStorageWithVersioning = immutableStorageWithVersioning;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ @Override
+ public void validate() {
+ super.validate();
+ if (immutabilityPolicy() != null) {
+ immutabilityPolicy().validate();
+ }
+ if (legalHold() != null) {
+ legalHold().validate();
+ }
+ if (immutableStorageWithVersioning() != null) {
+ immutableStorageWithVersioning().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueInner.java
new file mode 100644
index 0000000000000..bb16a378f66e6
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueInner.java
@@ -0,0 +1,54 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** The ListQueue model. */
+@JsonFlatten
+@Fluent
+public class ListQueueInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ListQueueInner.class);
+
+ /*
+ * A name-value pair that represents queue metadata.
+ */
+ @JsonProperty(value = "properties.metadata")
+ private Map metadata;
+
+ /**
+ * Get the metadata property: A name-value pair that represents queue metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.metadata;
+ }
+
+ /**
+ * Set the metadata property: A name-value pair that represents queue metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the ListQueueInner object itself.
+ */
+ public ListQueueInner withMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueServicesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueServicesInner.java
new file mode 100644
index 0000000000000..306449dab45a9
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListQueueServicesInner.java
@@ -0,0 +1,43 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The ListQueueServices model. */
+@Immutable
+public final class ListQueueServicesInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ListQueueServicesInner.class);
+
+ /*
+ * List of queue services returned.
+ */
+ @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY)
+ private List value;
+
+ /**
+ * Get the value property: List of queue services returned.
+ *
+ * @return the value value.
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (value() != null) {
+ value().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListServiceSasResponseInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListServiceSasResponseInner.java
new file mode 100644
index 0000000000000..99e35e81da82b
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListServiceSasResponseInner.java
@@ -0,0 +1,39 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The List service SAS credentials operation response. */
+@Immutable
+public final class ListServiceSasResponseInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ListServiceSasResponseInner.class);
+
+ /*
+ * List service SAS credentials of specific resource.
+ */
+ @JsonProperty(value = "serviceSasToken", access = JsonProperty.Access.WRITE_ONLY)
+ private String serviceSasToken;
+
+ /**
+ * Get the serviceSasToken property: List service SAS credentials of specific resource.
+ *
+ * @return the serviceSasToken value.
+ */
+ public String serviceSasToken() {
+ return this.serviceSasToken;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListTableServicesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListTableServicesInner.java
new file mode 100644
index 0000000000000..a341090272386
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ListTableServicesInner.java
@@ -0,0 +1,43 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The ListTableServices model. */
+@Immutable
+public final class ListTableServicesInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ListTableServicesInner.class);
+
+ /*
+ * List of table services returned.
+ */
+ @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY)
+ private List value;
+
+ /**
+ * Get the value property: List of table services returned.
+ *
+ * @return the value value.
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (value() != null) {
+ value().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ManagementPolicyInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ManagementPolicyInner.java
new file mode 100644
index 0000000000000..ec5c1cabd0fce
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ManagementPolicyInner.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.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.ManagementPolicySchema;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+
+/** The Get Storage Account ManagementPolicies operation response. */
+@JsonFlatten
+@Fluent
+public class ManagementPolicyInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ManagementPolicyInner.class);
+
+ /*
+ * Returns the date and time the ManagementPolicies was last modified.
+ */
+ @JsonProperty(value = "properties.lastModifiedTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastModifiedTime;
+
+ /*
+ * The Storage Account ManagementPolicy, in JSON format. See more details
+ * in:
+ * https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ */
+ @JsonProperty(value = "properties.policy")
+ private ManagementPolicySchema policy;
+
+ /**
+ * Get the lastModifiedTime property: Returns the date and time the ManagementPolicies was last modified.
+ *
+ * @return the lastModifiedTime value.
+ */
+ public OffsetDateTime lastModifiedTime() {
+ return this.lastModifiedTime;
+ }
+
+ /**
+ * Get the policy property: The Storage Account ManagementPolicy, in JSON format. See more details in:
+ * https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ *
+ * @return the policy value.
+ */
+ public ManagementPolicySchema policy() {
+ return this.policy;
+ }
+
+ /**
+ * Set the policy property: The Storage Account ManagementPolicy, in JSON format. See more details in:
+ * https://docs.microsoft.com/en-us/azure/storage/common/storage-lifecycle-managment-concepts.
+ *
+ * @param policy the policy value to set.
+ * @return the ManagementPolicyInner object itself.
+ */
+ public ManagementPolicyInner withPolicy(ManagementPolicySchema policy) {
+ this.policy = policy;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (policy() != null) {
+ policy().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ObjectReplicationPolicyInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ObjectReplicationPolicyInner.java
new file mode 100644
index 0000000000000..86c0ce32d6215
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/ObjectReplicationPolicyInner.java
@@ -0,0 +1,147 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.ObjectReplicationPolicyRule;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+
+/** The replication policy between two storage accounts. Multiple rules can be defined in one policy. */
+@JsonFlatten
+@Fluent
+public class ObjectReplicationPolicyInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(ObjectReplicationPolicyInner.class);
+
+ /*
+ * A unique id for object replication policy.
+ */
+ @JsonProperty(value = "properties.policyId", access = JsonProperty.Access.WRITE_ONLY)
+ private String policyId;
+
+ /*
+ * Indicates when the policy is enabled on the source account.
+ */
+ @JsonProperty(value = "properties.enabledTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime enabledTime;
+
+ /*
+ * Required. Source account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ */
+ @JsonProperty(value = "properties.sourceAccount")
+ private String sourceAccount;
+
+ /*
+ * Required. Destination account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ */
+ @JsonProperty(value = "properties.destinationAccount")
+ private String destinationAccount;
+
+ /*
+ * The storage account object replication rules.
+ */
+ @JsonProperty(value = "properties.rules")
+ private List rules;
+
+ /**
+ * Get the policyId property: A unique id for object replication policy.
+ *
+ * @return the policyId value.
+ */
+ public String policyId() {
+ return this.policyId;
+ }
+
+ /**
+ * Get the enabledTime property: Indicates when the policy is enabled on the source account.
+ *
+ * @return the enabledTime value.
+ */
+ public OffsetDateTime enabledTime() {
+ return this.enabledTime;
+ }
+
+ /**
+ * Get the sourceAccount property: Required. Source account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @return the sourceAccount value.
+ */
+ public String sourceAccount() {
+ return this.sourceAccount;
+ }
+
+ /**
+ * Set the sourceAccount property: Required. Source account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @param sourceAccount the sourceAccount value to set.
+ * @return the ObjectReplicationPolicyInner object itself.
+ */
+ public ObjectReplicationPolicyInner withSourceAccount(String sourceAccount) {
+ this.sourceAccount = sourceAccount;
+ return this;
+ }
+
+ /**
+ * Get the destinationAccount property: Required. Destination account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @return the destinationAccount value.
+ */
+ public String destinationAccount() {
+ return this.destinationAccount;
+ }
+
+ /**
+ * Set the destinationAccount property: Required. Destination account name. It should be full resource id if
+ * allowCrossTenantReplication set to false.
+ *
+ * @param destinationAccount the destinationAccount value to set.
+ * @return the ObjectReplicationPolicyInner object itself.
+ */
+ public ObjectReplicationPolicyInner withDestinationAccount(String destinationAccount) {
+ this.destinationAccount = destinationAccount;
+ return this;
+ }
+
+ /**
+ * Get the rules property: The storage account object replication rules.
+ *
+ * @return the rules value.
+ */
+ public List rules() {
+ return this.rules;
+ }
+
+ /**
+ * Set the rules property: The storage account object replication rules.
+ *
+ * @param rules the rules value to set.
+ * @return the ObjectReplicationPolicyInner object itself.
+ */
+ public ObjectReplicationPolicyInner withRules(List rules) {
+ this.rules = rules;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (rules() != null) {
+ rules().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/OperationInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/OperationInner.java
new file mode 100644
index 0000000000000..fb03eee2dd034
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/OperationInner.java
@@ -0,0 +1,138 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.OperationDisplay;
+import com.azure.resourcemanager.storage.generated.models.ServiceSpecification;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Storage REST API operation definition. */
+@JsonFlatten
+@Fluent
+public class OperationInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationInner.class);
+
+ /*
+ * Operation name: {provider}/{resource}/{operation}
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /*
+ * Display metadata associated with the operation.
+ */
+ @JsonProperty(value = "display")
+ private OperationDisplay display;
+
+ /*
+ * The origin of operations.
+ */
+ @JsonProperty(value = "origin")
+ private String origin;
+
+ /*
+ * One property of operation, include metric specifications.
+ */
+ @JsonProperty(value = "properties.serviceSpecification")
+ private ServiceSpecification serviceSpecification;
+
+ /**
+ * 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 OperationInner object itself.
+ */
+ public OperationInner withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the display property: Display metadata associated with the operation.
+ *
+ * @return the display value.
+ */
+ public OperationDisplay display() {
+ return this.display;
+ }
+
+ /**
+ * Set the display property: Display metadata associated with the operation.
+ *
+ * @param display the display value to set.
+ * @return the OperationInner object itself.
+ */
+ public OperationInner withDisplay(OperationDisplay display) {
+ this.display = display;
+ return this;
+ }
+
+ /**
+ * Get the origin property: The origin of operations.
+ *
+ * @return the origin value.
+ */
+ public String origin() {
+ return this.origin;
+ }
+
+ /**
+ * Set the origin property: The origin of operations.
+ *
+ * @param origin the origin value to set.
+ * @return the OperationInner object itself.
+ */
+ public OperationInner withOrigin(String origin) {
+ this.origin = origin;
+ return this;
+ }
+
+ /**
+ * Get the serviceSpecification property: One property of operation, include metric specifications.
+ *
+ * @return the serviceSpecification value.
+ */
+ public ServiceSpecification serviceSpecification() {
+ return this.serviceSpecification;
+ }
+
+ /**
+ * Set the serviceSpecification property: One property of operation, include metric specifications.
+ *
+ * @param serviceSpecification the serviceSpecification value to set.
+ * @return the OperationInner object itself.
+ */
+ public OperationInner withServiceSpecification(ServiceSpecification serviceSpecification) {
+ this.serviceSpecification = serviceSpecification;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (display() != null) {
+ display().validate();
+ }
+ if (serviceSpecification() != null) {
+ serviceSpecification().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateEndpointConnectionInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateEndpointConnectionInner.java
new file mode 100644
index 0000000000000..3dc2be03b0994
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateEndpointConnectionInner.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.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.PrivateEndpoint;
+import com.azure.resourcemanager.storage.generated.models.PrivateEndpointConnectionProvisioningState;
+import com.azure.resourcemanager.storage.generated.models.PrivateLinkServiceConnectionState;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The Private Endpoint Connection resource. */
+@JsonFlatten
+@Fluent
+public class PrivateEndpointConnectionInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(PrivateEndpointConnectionInner.class);
+
+ /*
+ * The resource of private end point.
+ */
+ @JsonProperty(value = "properties.privateEndpoint")
+ private PrivateEndpoint privateEndpoint;
+
+ /*
+ * A collection of information about the state of the connection between
+ * service consumer and provider.
+ */
+ @JsonProperty(value = "properties.privateLinkServiceConnectionState")
+ private PrivateLinkServiceConnectionState privateLinkServiceConnectionState;
+
+ /*
+ * The provisioning state of the private endpoint connection resource.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private PrivateEndpointConnectionProvisioningState provisioningState;
+
+ /**
+ * Get the privateEndpoint property: The resource of private end point.
+ *
+ * @return the privateEndpoint value.
+ */
+ public PrivateEndpoint privateEndpoint() {
+ return this.privateEndpoint;
+ }
+
+ /**
+ * Set the privateEndpoint property: The resource of private end point.
+ *
+ * @param privateEndpoint the privateEndpoint value to set.
+ * @return the PrivateEndpointConnectionInner object itself.
+ */
+ public PrivateEndpointConnectionInner withPrivateEndpoint(PrivateEndpoint privateEndpoint) {
+ this.privateEndpoint = privateEndpoint;
+ return this;
+ }
+
+ /**
+ * Get the privateLinkServiceConnectionState property: A collection of information about the state of the connection
+ * between service consumer and provider.
+ *
+ * @return the privateLinkServiceConnectionState value.
+ */
+ public PrivateLinkServiceConnectionState privateLinkServiceConnectionState() {
+ return this.privateLinkServiceConnectionState;
+ }
+
+ /**
+ * Set the privateLinkServiceConnectionState property: A collection of information about the state of the connection
+ * between service consumer and provider.
+ *
+ * @param privateLinkServiceConnectionState the privateLinkServiceConnectionState value to set.
+ * @return the PrivateEndpointConnectionInner object itself.
+ */
+ public PrivateEndpointConnectionInner withPrivateLinkServiceConnectionState(
+ PrivateLinkServiceConnectionState privateLinkServiceConnectionState) {
+ this.privateLinkServiceConnectionState = privateLinkServiceConnectionState;
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: The provisioning state of the private endpoint connection resource.
+ *
+ * @return the provisioningState value.
+ */
+ public PrivateEndpointConnectionProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (privateEndpoint() != null) {
+ privateEndpoint().validate();
+ }
+ if (privateLinkServiceConnectionState() != null) {
+ privateLinkServiceConnectionState().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateLinkResourceListResultInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateLinkResourceListResultInner.java
new file mode 100644
index 0000000000000..daa523e409dc6
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/PrivateLinkResourceListResultInner.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.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.PrivateLinkResource;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** A list of private link resources. */
+@Fluent
+public final class PrivateLinkResourceListResultInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(PrivateLinkResourceListResultInner.class);
+
+ /*
+ * Array of private link resources
+ */
+ @JsonProperty(value = "value")
+ private List value;
+
+ /**
+ * Get the value property: Array of private link resources.
+ *
+ * @return the value value.
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value property: Array of private link resources.
+ *
+ * @param value the value value to set.
+ * @return the PrivateLinkResourceListResultInner object itself.
+ */
+ public PrivateLinkResourceListResultInner withValue(List value) {
+ this.value = value;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (value() != null) {
+ value().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueServicePropertiesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueServicePropertiesInner.java
new file mode 100644
index 0000000000000..a58726888a623
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/QueueServicePropertiesInner.java
@@ -0,0 +1,64 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.CorsRules;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of a storage account’s Queue service. */
+@JsonFlatten
+@Fluent
+public class QueueServicePropertiesInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(QueueServicePropertiesInner.class);
+
+ /*
+ * Specifies CORS rules for the Queue service. You can include up to five
+ * CorsRule elements in the request. If no CorsRule elements are included
+ * in the request body, all CORS rules will be deleted, and CORS will be
+ * disabled for the Queue service.
+ */
+ @JsonProperty(value = "properties.cors")
+ private CorsRules cors;
+
+ /**
+ * Get the cors property: Specifies CORS rules for the Queue service. You can include up to five CorsRule elements
+ * in the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and
+ * CORS will be disabled for the Queue service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.cors;
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the Queue service. You can include up to five CorsRule elements
+ * in the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and
+ * CORS will be disabled for the Queue service.
+ *
+ * @param cors the cors value to set.
+ * @return the QueueServicePropertiesInner object itself.
+ */
+ public QueueServicePropertiesInner withCors(CorsRules cors) {
+ this.cors = cors;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (cors() != null) {
+ cors().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/SkuInformationInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/SkuInformationInner.java
new file mode 100644
index 0000000000000..411ef76ea679f
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/SkuInformationInner.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.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.Kind;
+import com.azure.resourcemanager.storage.generated.models.Restriction;
+import com.azure.resourcemanager.storage.generated.models.SkuCapability;
+import com.azure.resourcemanager.storage.generated.models.SkuName;
+import com.azure.resourcemanager.storage.generated.models.SkuTier;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Storage SKU and its properties. */
+@Fluent
+public final class SkuInformationInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(SkuInformationInner.class);
+
+ /*
+ * The SKU name. Required for account creation; optional for update. Note
+ * that in older versions, SKU name was called accountType.
+ */
+ @JsonProperty(value = "name", required = true)
+ private SkuName name;
+
+ /*
+ * The SKU tier. This is based on the SKU name.
+ */
+ @JsonProperty(value = "tier", access = JsonProperty.Access.WRITE_ONLY)
+ private SkuTier tier;
+
+ /*
+ * The type of the resource, usually it is 'storageAccounts'.
+ */
+ @JsonProperty(value = "resourceType", access = JsonProperty.Access.WRITE_ONLY)
+ private String resourceType;
+
+ /*
+ * Indicates the type of storage account.
+ */
+ @JsonProperty(value = "kind", access = JsonProperty.Access.WRITE_ONLY)
+ private Kind kind;
+
+ /*
+ * The set of locations that the SKU is available. This will be supported
+ * and registered Azure Geo Regions (e.g. West US, East US, Southeast Asia,
+ * etc.).
+ */
+ @JsonProperty(value = "locations", access = JsonProperty.Access.WRITE_ONLY)
+ private List locations;
+
+ /*
+ * The capability information in the specified SKU, including file
+ * encryption, network ACLs, change notification, etc.
+ */
+ @JsonProperty(value = "capabilities", access = JsonProperty.Access.WRITE_ONLY)
+ private List capabilities;
+
+ /*
+ * The restrictions because of which SKU cannot be used. This is empty if
+ * there are no restrictions.
+ */
+ @JsonProperty(value = "restrictions")
+ private List restrictions;
+
+ /**
+ * Get the name property: The SKU name. Required for account creation; optional for update. Note that in older
+ * versions, SKU name was called accountType.
+ *
+ * @return the name value.
+ */
+ public SkuName name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name property: The SKU name. Required for account creation; optional for update. Note that in older
+ * versions, SKU name was called accountType.
+ *
+ * @param name the name value to set.
+ * @return the SkuInformationInner object itself.
+ */
+ public SkuInformationInner withName(SkuName name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the tier property: The SKU tier. This is based on the SKU name.
+ *
+ * @return the tier value.
+ */
+ public SkuTier tier() {
+ return this.tier;
+ }
+
+ /**
+ * Get the resourceType property: The type of the resource, usually it is 'storageAccounts'.
+ *
+ * @return the resourceType value.
+ */
+ public String resourceType() {
+ return this.resourceType;
+ }
+
+ /**
+ * Get the kind property: Indicates the type of storage account.
+ *
+ * @return the kind value.
+ */
+ public Kind kind() {
+ return this.kind;
+ }
+
+ /**
+ * Get the locations property: The set of locations that the SKU is available. This will be supported and registered
+ * Azure Geo Regions (e.g. West US, East US, Southeast Asia, etc.).
+ *
+ * @return the locations value.
+ */
+ public List locations() {
+ return this.locations;
+ }
+
+ /**
+ * Get the capabilities property: The capability information in the specified SKU, including file encryption,
+ * network ACLs, change notification, etc.
+ *
+ * @return the capabilities value.
+ */
+ public List capabilities() {
+ return this.capabilities;
+ }
+
+ /**
+ * Get the restrictions property: The restrictions because of which SKU cannot be used. This is empty if there are
+ * no restrictions.
+ *
+ * @return the restrictions value.
+ */
+ public List restrictions() {
+ return this.restrictions;
+ }
+
+ /**
+ * Set the restrictions property: The restrictions because of which SKU cannot be used. This is empty if there are
+ * no restrictions.
+ *
+ * @param restrictions the restrictions value to set.
+ * @return the SkuInformationInner object itself.
+ */
+ public SkuInformationInner withRestrictions(List restrictions) {
+ this.restrictions = restrictions;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (name() == null) {
+ throw logger
+ .logExceptionAsError(
+ new IllegalArgumentException("Missing required property name in model SkuInformationInner"));
+ }
+ if (capabilities() != null) {
+ capabilities().forEach(e -> e.validate());
+ }
+ if (restrictions() != null) {
+ restrictions().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountInner.java
new file mode 100644
index 0000000000000..8d46f501bef27
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountInner.java
@@ -0,0 +1,808 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.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.storage.generated.models.AccessTier;
+import com.azure.resourcemanager.storage.generated.models.AccountStatus;
+import com.azure.resourcemanager.storage.generated.models.AzureFilesIdentityBasedAuthentication;
+import com.azure.resourcemanager.storage.generated.models.CustomDomain;
+import com.azure.resourcemanager.storage.generated.models.Encryption;
+import com.azure.resourcemanager.storage.generated.models.Endpoints;
+import com.azure.resourcemanager.storage.generated.models.ExtendedLocation;
+import com.azure.resourcemanager.storage.generated.models.GeoReplicationStats;
+import com.azure.resourcemanager.storage.generated.models.Identity;
+import com.azure.resourcemanager.storage.generated.models.KeyCreationTime;
+import com.azure.resourcemanager.storage.generated.models.KeyPolicy;
+import com.azure.resourcemanager.storage.generated.models.Kind;
+import com.azure.resourcemanager.storage.generated.models.LargeFileSharesState;
+import com.azure.resourcemanager.storage.generated.models.MinimumTlsVersion;
+import com.azure.resourcemanager.storage.generated.models.NetworkRuleSet;
+import com.azure.resourcemanager.storage.generated.models.ProvisioningState;
+import com.azure.resourcemanager.storage.generated.models.RoutingPreference;
+import com.azure.resourcemanager.storage.generated.models.SasPolicy;
+import com.azure.resourcemanager.storage.generated.models.Sku;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Map;
+
+/** The storage account. */
+@JsonFlatten
+@Fluent
+public class StorageAccountInner extends Resource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(StorageAccountInner.class);
+
+ /*
+ * Gets the SKU.
+ */
+ @JsonProperty(value = "sku", access = JsonProperty.Access.WRITE_ONLY)
+ private Sku sku;
+
+ /*
+ * Gets the Kind.
+ */
+ @JsonProperty(value = "kind", access = JsonProperty.Access.WRITE_ONLY)
+ private Kind kind;
+
+ /*
+ * The identity of the resource.
+ */
+ @JsonProperty(value = "identity")
+ private Identity identity;
+
+ /*
+ * The extendedLocation of the resource.
+ */
+ @JsonProperty(value = "extendedLocation")
+ private ExtendedLocation extendedLocation;
+
+ /*
+ * Gets the status of the storage account at the time the operation was
+ * called.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /*
+ * Gets the URLs that are used to perform a retrieval of a public blob,
+ * queue, or table object. Note that Standard_ZRS and Premium_LRS accounts
+ * only return the blob endpoint.
+ */
+ @JsonProperty(value = "properties.primaryEndpoints", access = JsonProperty.Access.WRITE_ONLY)
+ private Endpoints primaryEndpoints;
+
+ /*
+ * Gets the location of the primary data center for the storage account.
+ */
+ @JsonProperty(value = "properties.primaryLocation", access = JsonProperty.Access.WRITE_ONLY)
+ private String primaryLocation;
+
+ /*
+ * Gets the status indicating whether the primary location of the storage
+ * account is available or unavailable.
+ */
+ @JsonProperty(value = "properties.statusOfPrimary", access = JsonProperty.Access.WRITE_ONLY)
+ private AccountStatus statusOfPrimary;
+
+ /*
+ * Gets the timestamp of the most recent instance of a failover to the
+ * secondary location. Only the most recent timestamp is retained. This
+ * element is not returned if there has never been a failover instance.
+ * Only available if the accountType is Standard_GRS or Standard_RAGRS.
+ */
+ @JsonProperty(value = "properties.lastGeoFailoverTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime lastGeoFailoverTime;
+
+ /*
+ * Gets the location of the geo-replicated secondary for the storage
+ * account. Only available if the accountType is Standard_GRS or
+ * Standard_RAGRS.
+ */
+ @JsonProperty(value = "properties.secondaryLocation", access = JsonProperty.Access.WRITE_ONLY)
+ private String secondaryLocation;
+
+ /*
+ * Gets the status indicating whether the secondary location of the storage
+ * account is available or unavailable. Only available if the SKU name is
+ * Standard_GRS or Standard_RAGRS.
+ */
+ @JsonProperty(value = "properties.statusOfSecondary", access = JsonProperty.Access.WRITE_ONLY)
+ private AccountStatus statusOfSecondary;
+
+ /*
+ * Gets the creation date and time of the storage account in UTC.
+ */
+ @JsonProperty(value = "properties.creationTime", access = JsonProperty.Access.WRITE_ONLY)
+ private OffsetDateTime creationTime;
+
+ /*
+ * Gets the custom domain the user assigned to this storage account.
+ */
+ @JsonProperty(value = "properties.customDomain", access = JsonProperty.Access.WRITE_ONLY)
+ private CustomDomain customDomain;
+
+ /*
+ * SasPolicy assigned to the storage account.
+ */
+ @JsonProperty(value = "properties.sasPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private SasPolicy sasPolicy;
+
+ /*
+ * KeyPolicy assigned to the storage account.
+ */
+ @JsonProperty(value = "properties.keyPolicy", access = JsonProperty.Access.WRITE_ONLY)
+ private KeyPolicy keyPolicy;
+
+ /*
+ * Storage account keys creation time.
+ */
+ @JsonProperty(value = "properties.keyCreationTime", access = JsonProperty.Access.WRITE_ONLY)
+ private KeyCreationTime keyCreationTime;
+
+ /*
+ * Gets the URLs that are used to perform a retrieval of a public blob,
+ * queue, or table object from the secondary location of the storage
+ * account. Only available if the SKU name is Standard_RAGRS.
+ */
+ @JsonProperty(value = "properties.secondaryEndpoints", access = JsonProperty.Access.WRITE_ONLY)
+ private Endpoints secondaryEndpoints;
+
+ /*
+ * Gets the encryption settings on the account. If unspecified, the account
+ * is unencrypted.
+ */
+ @JsonProperty(value = "properties.encryption", access = JsonProperty.Access.WRITE_ONLY)
+ private Encryption encryption;
+
+ /*
+ * Required for storage accounts where kind = BlobStorage. The access tier
+ * used for billing.
+ */
+ @JsonProperty(value = "properties.accessTier", access = JsonProperty.Access.WRITE_ONLY)
+ private AccessTier accessTier;
+
+ /*
+ * Provides the identity based authentication settings for Azure Files.
+ */
+ @JsonProperty(value = "properties.azureFilesIdentityBasedAuthentication")
+ private AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication;
+
+ /*
+ * Allows https traffic only to storage service if sets to true.
+ */
+ @JsonProperty(value = "properties.supportsHttpsTrafficOnly")
+ private Boolean enableHttpsTrafficOnly;
+
+ /*
+ * Network rule set
+ */
+ @JsonProperty(value = "properties.networkAcls", access = JsonProperty.Access.WRITE_ONLY)
+ private NetworkRuleSet networkRuleSet;
+
+ /*
+ * Account HierarchicalNamespace enabled if sets to true.
+ */
+ @JsonProperty(value = "properties.isHnsEnabled")
+ private Boolean isHnsEnabled;
+
+ /*
+ * Geo Replication Stats
+ */
+ @JsonProperty(value = "properties.geoReplicationStats", access = JsonProperty.Access.WRITE_ONLY)
+ private GeoReplicationStats geoReplicationStats;
+
+ /*
+ * If the failover is in progress, the value will be true, otherwise, it
+ * will be null.
+ */
+ @JsonProperty(value = "properties.failoverInProgress", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean failoverInProgress;
+
+ /*
+ * Allow large file shares if sets to Enabled. It cannot be disabled once
+ * it is enabled.
+ */
+ @JsonProperty(value = "properties.largeFileSharesState")
+ private LargeFileSharesState largeFileSharesState;
+
+ /*
+ * List of private endpoint connection associated with the specified
+ * storage account
+ */
+ @JsonProperty(value = "properties.privateEndpointConnections", access = JsonProperty.Access.WRITE_ONLY)
+ private List privateEndpointConnections;
+
+ /*
+ * Maintains information about the network routing choice opted by the user
+ * for data transfer
+ */
+ @JsonProperty(value = "properties.routingPreference")
+ private RoutingPreference routingPreference;
+
+ /*
+ * Blob restore status
+ */
+ @JsonProperty(value = "properties.blobRestoreStatus", access = JsonProperty.Access.WRITE_ONLY)
+ private BlobRestoreStatusInner blobRestoreStatus;
+
+ /*
+ * Allow or disallow public access to all blobs or containers in the
+ * storage account. The default interpretation is true for this property.
+ */
+ @JsonProperty(value = "properties.allowBlobPublicAccess")
+ private Boolean allowBlobPublicAccess;
+
+ /*
+ * Set the minimum TLS version to be permitted on requests to storage. The
+ * default interpretation is TLS 1.0 for this property.
+ */
+ @JsonProperty(value = "properties.minimumTlsVersion")
+ private MinimumTlsVersion minimumTlsVersion;
+
+ /*
+ * Indicates whether the storage account permits requests to be authorized
+ * with the account access key via Shared Key. If false, then all requests,
+ * including shared access signatures, must be authorized with Azure Active
+ * Directory (Azure AD). The default value is null, which is equivalent to
+ * true.
+ */
+ @JsonProperty(value = "properties.allowSharedKeyAccess")
+ private Boolean allowSharedKeyAccess;
+
+ /*
+ * NFS 3.0 protocol support enabled if set to true.
+ */
+ @JsonProperty(value = "properties.isNfsV3Enabled")
+ private Boolean enableNfsV3;
+
+ /*
+ * Allow or disallow cross AAD tenant object replication. The default
+ * interpretation is true for this property.
+ */
+ @JsonProperty(value = "properties.allowCrossTenantReplication")
+ private Boolean allowCrossTenantReplication;
+
+ /**
+ * Get the sku property: Gets the SKU.
+ *
+ * @return the sku value.
+ */
+ public Sku sku() {
+ return this.sku;
+ }
+
+ /**
+ * Get the kind property: Gets the Kind.
+ *
+ * @return the kind value.
+ */
+ public Kind kind() {
+ return this.kind;
+ }
+
+ /**
+ * Get the identity property: The identity of the resource.
+ *
+ * @return the identity value.
+ */
+ public Identity identity() {
+ return this.identity;
+ }
+
+ /**
+ * Set the identity property: The identity of the resource.
+ *
+ * @param identity the identity value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withIdentity(Identity identity) {
+ this.identity = identity;
+ return this;
+ }
+
+ /**
+ * Get the extendedLocation property: The extendedLocation of the resource.
+ *
+ * @return the extendedLocation value.
+ */
+ public ExtendedLocation extendedLocation() {
+ return this.extendedLocation;
+ }
+
+ /**
+ * Set the extendedLocation property: The extendedLocation of the resource.
+ *
+ * @param extendedLocation the extendedLocation value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withExtendedLocation(ExtendedLocation extendedLocation) {
+ this.extendedLocation = extendedLocation;
+ return this;
+ }
+
+ /**
+ * Get the provisioningState property: Gets the status of the storage account at the time the operation was called.
+ *
+ * @return the provisioningState value.
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the primaryEndpoints property: Gets the URLs that are used to perform a retrieval of a public blob, queue, or
+ * table object. Note that Standard_ZRS and Premium_LRS accounts only return the blob endpoint.
+ *
+ * @return the primaryEndpoints value.
+ */
+ public Endpoints primaryEndpoints() {
+ return this.primaryEndpoints;
+ }
+
+ /**
+ * Get the primaryLocation property: Gets the location of the primary data center for the storage account.
+ *
+ * @return the primaryLocation value.
+ */
+ public String primaryLocation() {
+ return this.primaryLocation;
+ }
+
+ /**
+ * Get the statusOfPrimary property: Gets the status indicating whether the primary location of the storage account
+ * is available or unavailable.
+ *
+ * @return the statusOfPrimary value.
+ */
+ public AccountStatus statusOfPrimary() {
+ return this.statusOfPrimary;
+ }
+
+ /**
+ * Get the lastGeoFailoverTime property: Gets the timestamp of the most recent instance of a failover to the
+ * secondary location. Only the most recent timestamp is retained. This element is not returned if there has never
+ * been a failover instance. Only available if the accountType is Standard_GRS or Standard_RAGRS.
+ *
+ * @return the lastGeoFailoverTime value.
+ */
+ public OffsetDateTime lastGeoFailoverTime() {
+ return this.lastGeoFailoverTime;
+ }
+
+ /**
+ * Get the secondaryLocation property: Gets the location of the geo-replicated secondary for the storage account.
+ * Only available if the accountType is Standard_GRS or Standard_RAGRS.
+ *
+ * @return the secondaryLocation value.
+ */
+ public String secondaryLocation() {
+ return this.secondaryLocation;
+ }
+
+ /**
+ * Get the statusOfSecondary property: Gets the status indicating whether the secondary location of the storage
+ * account is available or unavailable. Only available if the SKU name is Standard_GRS or Standard_RAGRS.
+ *
+ * @return the statusOfSecondary value.
+ */
+ public AccountStatus statusOfSecondary() {
+ return this.statusOfSecondary;
+ }
+
+ /**
+ * Get the creationTime property: Gets the creation date and time of the storage account in UTC.
+ *
+ * @return the creationTime value.
+ */
+ public OffsetDateTime creationTime() {
+ return this.creationTime;
+ }
+
+ /**
+ * Get the customDomain property: Gets the custom domain the user assigned to this storage account.
+ *
+ * @return the customDomain value.
+ */
+ public CustomDomain customDomain() {
+ return this.customDomain;
+ }
+
+ /**
+ * Get the sasPolicy property: SasPolicy assigned to the storage account.
+ *
+ * @return the sasPolicy value.
+ */
+ public SasPolicy sasPolicy() {
+ return this.sasPolicy;
+ }
+
+ /**
+ * Get the keyPolicy property: KeyPolicy assigned to the storage account.
+ *
+ * @return the keyPolicy value.
+ */
+ public KeyPolicy keyPolicy() {
+ return this.keyPolicy;
+ }
+
+ /**
+ * Get the keyCreationTime property: Storage account keys creation time.
+ *
+ * @return the keyCreationTime value.
+ */
+ public KeyCreationTime keyCreationTime() {
+ return this.keyCreationTime;
+ }
+
+ /**
+ * Get the secondaryEndpoints property: Gets the URLs that are used to perform a retrieval of a public blob, queue,
+ * or table object from the secondary location of the storage account. Only available if the SKU name is
+ * Standard_RAGRS.
+ *
+ * @return the secondaryEndpoints value.
+ */
+ public Endpoints secondaryEndpoints() {
+ return this.secondaryEndpoints;
+ }
+
+ /**
+ * Get the encryption property: Gets the encryption settings on the account. If unspecified, the account is
+ * unencrypted.
+ *
+ * @return the encryption value.
+ */
+ public Encryption encryption() {
+ return this.encryption;
+ }
+
+ /**
+ * Get the accessTier property: Required for storage accounts where kind = BlobStorage. The access tier used for
+ * billing.
+ *
+ * @return the accessTier value.
+ */
+ public AccessTier accessTier() {
+ return this.accessTier;
+ }
+
+ /**
+ * Get the azureFilesIdentityBasedAuthentication property: Provides the identity based authentication settings for
+ * Azure Files.
+ *
+ * @return the azureFilesIdentityBasedAuthentication value.
+ */
+ public AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication() {
+ return this.azureFilesIdentityBasedAuthentication;
+ }
+
+ /**
+ * Set the azureFilesIdentityBasedAuthentication property: Provides the identity based authentication settings for
+ * Azure Files.
+ *
+ * @param azureFilesIdentityBasedAuthentication the azureFilesIdentityBasedAuthentication value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withAzureFilesIdentityBasedAuthentication(
+ AzureFilesIdentityBasedAuthentication azureFilesIdentityBasedAuthentication) {
+ this.azureFilesIdentityBasedAuthentication = azureFilesIdentityBasedAuthentication;
+ return this;
+ }
+
+ /**
+ * Get the enableHttpsTrafficOnly property: Allows https traffic only to storage service if sets to true.
+ *
+ * @return the enableHttpsTrafficOnly value.
+ */
+ public Boolean enableHttpsTrafficOnly() {
+ return this.enableHttpsTrafficOnly;
+ }
+
+ /**
+ * Set the enableHttpsTrafficOnly property: Allows https traffic only to storage service if sets to true.
+ *
+ * @param enableHttpsTrafficOnly the enableHttpsTrafficOnly value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withEnableHttpsTrafficOnly(Boolean enableHttpsTrafficOnly) {
+ this.enableHttpsTrafficOnly = enableHttpsTrafficOnly;
+ return this;
+ }
+
+ /**
+ * Get the networkRuleSet property: Network rule set.
+ *
+ * @return the networkRuleSet value.
+ */
+ public NetworkRuleSet networkRuleSet() {
+ return this.networkRuleSet;
+ }
+
+ /**
+ * Get the isHnsEnabled property: Account HierarchicalNamespace enabled if sets to true.
+ *
+ * @return the isHnsEnabled value.
+ */
+ public Boolean isHnsEnabled() {
+ return this.isHnsEnabled;
+ }
+
+ /**
+ * Set the isHnsEnabled property: Account HierarchicalNamespace enabled if sets to true.
+ *
+ * @param isHnsEnabled the isHnsEnabled value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withIsHnsEnabled(Boolean isHnsEnabled) {
+ this.isHnsEnabled = isHnsEnabled;
+ return this;
+ }
+
+ /**
+ * Get the geoReplicationStats property: Geo Replication Stats.
+ *
+ * @return the geoReplicationStats value.
+ */
+ public GeoReplicationStats geoReplicationStats() {
+ return this.geoReplicationStats;
+ }
+
+ /**
+ * Get the failoverInProgress property: If the failover is in progress, the value will be true, otherwise, it will
+ * be null.
+ *
+ * @return the failoverInProgress value.
+ */
+ public Boolean failoverInProgress() {
+ return this.failoverInProgress;
+ }
+
+ /**
+ * Get the largeFileSharesState property: Allow large file shares if sets to Enabled. It cannot be disabled once it
+ * is enabled.
+ *
+ * @return the largeFileSharesState value.
+ */
+ public LargeFileSharesState largeFileSharesState() {
+ return this.largeFileSharesState;
+ }
+
+ /**
+ * Set the largeFileSharesState property: Allow large file shares if sets to Enabled. It cannot be disabled once it
+ * is enabled.
+ *
+ * @param largeFileSharesState the largeFileSharesState value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withLargeFileSharesState(LargeFileSharesState largeFileSharesState) {
+ this.largeFileSharesState = largeFileSharesState;
+ return this;
+ }
+
+ /**
+ * Get the privateEndpointConnections property: List of private endpoint connection associated with the specified
+ * storage account.
+ *
+ * @return the privateEndpointConnections value.
+ */
+ public List privateEndpointConnections() {
+ return this.privateEndpointConnections;
+ }
+
+ /**
+ * Get the routingPreference property: Maintains information about the network routing choice opted by the user for
+ * data transfer.
+ *
+ * @return the routingPreference value.
+ */
+ public RoutingPreference routingPreference() {
+ return this.routingPreference;
+ }
+
+ /**
+ * Set the routingPreference property: Maintains information about the network routing choice opted by the user for
+ * data transfer.
+ *
+ * @param routingPreference the routingPreference value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withRoutingPreference(RoutingPreference routingPreference) {
+ this.routingPreference = routingPreference;
+ return this;
+ }
+
+ /**
+ * Get the blobRestoreStatus property: Blob restore status.
+ *
+ * @return the blobRestoreStatus value.
+ */
+ public BlobRestoreStatusInner blobRestoreStatus() {
+ return this.blobRestoreStatus;
+ }
+
+ /**
+ * Get the allowBlobPublicAccess property: Allow or disallow public access to all blobs or containers in the storage
+ * account. The default interpretation is true for this property.
+ *
+ * @return the allowBlobPublicAccess value.
+ */
+ public Boolean allowBlobPublicAccess() {
+ return this.allowBlobPublicAccess;
+ }
+
+ /**
+ * Set the allowBlobPublicAccess property: Allow or disallow public access to all blobs or containers in the storage
+ * account. The default interpretation is true for this property.
+ *
+ * @param allowBlobPublicAccess the allowBlobPublicAccess value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withAllowBlobPublicAccess(Boolean allowBlobPublicAccess) {
+ this.allowBlobPublicAccess = allowBlobPublicAccess;
+ return this;
+ }
+
+ /**
+ * Get the minimumTlsVersion property: Set the minimum TLS version to be permitted on requests to storage. The
+ * default interpretation is TLS 1.0 for this property.
+ *
+ * @return the minimumTlsVersion value.
+ */
+ public MinimumTlsVersion minimumTlsVersion() {
+ return this.minimumTlsVersion;
+ }
+
+ /**
+ * Set the minimumTlsVersion property: Set the minimum TLS version to be permitted on requests to storage. The
+ * default interpretation is TLS 1.0 for this property.
+ *
+ * @param minimumTlsVersion the minimumTlsVersion value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withMinimumTlsVersion(MinimumTlsVersion minimumTlsVersion) {
+ this.minimumTlsVersion = minimumTlsVersion;
+ return this;
+ }
+
+ /**
+ * Get the allowSharedKeyAccess property: Indicates whether the storage account permits requests to be authorized
+ * with the account access key via Shared Key. If false, then all requests, including shared access signatures, must
+ * be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
+ *
+ * @return the allowSharedKeyAccess value.
+ */
+ public Boolean allowSharedKeyAccess() {
+ return this.allowSharedKeyAccess;
+ }
+
+ /**
+ * Set the allowSharedKeyAccess property: Indicates whether the storage account permits requests to be authorized
+ * with the account access key via Shared Key. If false, then all requests, including shared access signatures, must
+ * be authorized with Azure Active Directory (Azure AD). The default value is null, which is equivalent to true.
+ *
+ * @param allowSharedKeyAccess the allowSharedKeyAccess value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withAllowSharedKeyAccess(Boolean allowSharedKeyAccess) {
+ this.allowSharedKeyAccess = allowSharedKeyAccess;
+ return this;
+ }
+
+ /**
+ * Get the enableNfsV3 property: NFS 3.0 protocol support enabled if set to true.
+ *
+ * @return the enableNfsV3 value.
+ */
+ public Boolean enableNfsV3() {
+ return this.enableNfsV3;
+ }
+
+ /**
+ * Set the enableNfsV3 property: NFS 3.0 protocol support enabled if set to true.
+ *
+ * @param enableNfsV3 the enableNfsV3 value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withEnableNfsV3(Boolean enableNfsV3) {
+ this.enableNfsV3 = enableNfsV3;
+ return this;
+ }
+
+ /**
+ * Get the allowCrossTenantReplication property: Allow or disallow cross AAD tenant object replication. The default
+ * interpretation is true for this property.
+ *
+ * @return the allowCrossTenantReplication value.
+ */
+ public Boolean allowCrossTenantReplication() {
+ return this.allowCrossTenantReplication;
+ }
+
+ /**
+ * Set the allowCrossTenantReplication property: Allow or disallow cross AAD tenant object replication. The default
+ * interpretation is true for this property.
+ *
+ * @param allowCrossTenantReplication the allowCrossTenantReplication value to set.
+ * @return the StorageAccountInner object itself.
+ */
+ public StorageAccountInner withAllowCrossTenantReplication(Boolean allowCrossTenantReplication) {
+ this.allowCrossTenantReplication = allowCrossTenantReplication;
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public StorageAccountInner withLocation(String location) {
+ super.withLocation(location);
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public StorageAccountInner withTags(Map tags) {
+ super.withTags(tags);
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (sku() != null) {
+ sku().validate();
+ }
+ if (identity() != null) {
+ identity().validate();
+ }
+ if (extendedLocation() != null) {
+ extendedLocation().validate();
+ }
+ if (primaryEndpoints() != null) {
+ primaryEndpoints().validate();
+ }
+ if (customDomain() != null) {
+ customDomain().validate();
+ }
+ if (sasPolicy() != null) {
+ sasPolicy().validate();
+ }
+ if (keyPolicy() != null) {
+ keyPolicy().validate();
+ }
+ if (keyCreationTime() != null) {
+ keyCreationTime().validate();
+ }
+ if (secondaryEndpoints() != null) {
+ secondaryEndpoints().validate();
+ }
+ if (encryption() != null) {
+ encryption().validate();
+ }
+ if (azureFilesIdentityBasedAuthentication() != null) {
+ azureFilesIdentityBasedAuthentication().validate();
+ }
+ if (networkRuleSet() != null) {
+ networkRuleSet().validate();
+ }
+ if (geoReplicationStats() != null) {
+ geoReplicationStats().validate();
+ }
+ if (privateEndpointConnections() != null) {
+ privateEndpointConnections().forEach(e -> e.validate());
+ }
+ if (routingPreference() != null) {
+ routingPreference().validate();
+ }
+ if (blobRestoreStatus() != null) {
+ blobRestoreStatus().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountListKeysResultInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountListKeysResultInner.java
new file mode 100644
index 0000000000000..1259a93f43188
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageAccountListKeysResultInner.java
@@ -0,0 +1,46 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.StorageAccountKey;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** The response from the ListKeys operation. */
+@Immutable
+public final class StorageAccountListKeysResultInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(StorageAccountListKeysResultInner.class);
+
+ /*
+ * Gets the list of storage account keys and their properties for the
+ * specified storage account.
+ */
+ @JsonProperty(value = "keys", access = JsonProperty.Access.WRITE_ONLY)
+ private List keys;
+
+ /**
+ * Get the keys property: Gets the list of storage account keys and their properties for the specified storage
+ * account.
+ *
+ * @return the keys value.
+ */
+ public List keys() {
+ return this.keys;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (keys() != null) {
+ keys().forEach(e -> e.validate());
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageQueueInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageQueueInner.java
new file mode 100644
index 0000000000000..e4ccca591b120
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/StorageQueueInner.java
@@ -0,0 +1,72 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+
+/** The StorageQueue model. */
+@JsonFlatten
+@Fluent
+public class StorageQueueInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(StorageQueueInner.class);
+
+ /*
+ * A name-value pair that represents queue metadata.
+ */
+ @JsonProperty(value = "properties.metadata")
+ private Map metadata;
+
+ /*
+ * Integer indicating an approximate number of messages in the queue. This
+ * number is not lower than the actual number of messages in the queue, but
+ * could be higher.
+ */
+ @JsonProperty(value = "properties.approximateMessageCount", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer approximateMessageCount;
+
+ /**
+ * Get the metadata property: A name-value pair that represents queue metadata.
+ *
+ * @return the metadata value.
+ */
+ public Map metadata() {
+ return this.metadata;
+ }
+
+ /**
+ * Set the metadata property: A name-value pair that represents queue metadata.
+ *
+ * @param metadata the metadata value to set.
+ * @return the StorageQueueInner object itself.
+ */
+ public StorageQueueInner withMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ /**
+ * Get the approximateMessageCount property: Integer indicating an approximate number of messages in the queue. This
+ * number is not lower than the actual number of messages in the queue, but could be higher.
+ *
+ * @return the approximateMessageCount value.
+ */
+ public Integer approximateMessageCount() {
+ return this.approximateMessageCount;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableInner.java
new file mode 100644
index 0000000000000..8adabe63518b6
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableInner.java
@@ -0,0 +1,42 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Properties of the table, including Id, resource name, resource type. */
+@JsonFlatten
+@Immutable
+public class TableInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(TableInner.class);
+
+ /*
+ * Table name under the specified account
+ */
+ @JsonProperty(value = "properties.tableName", access = JsonProperty.Access.WRITE_ONLY)
+ private String tableName;
+
+ /**
+ * Get the tableName property: Table name under the specified account.
+ *
+ * @return the tableName value.
+ */
+ public String tableName() {
+ return this.tableName;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableServicePropertiesInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableServicePropertiesInner.java
new file mode 100644
index 0000000000000..3bd179d2e53da
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/TableServicePropertiesInner.java
@@ -0,0 +1,64 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.annotation.JsonFlatten;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.CorsRules;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The properties of a storage account’s Table service. */
+@JsonFlatten
+@Fluent
+public class TableServicePropertiesInner extends ProxyResource {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(TableServicePropertiesInner.class);
+
+ /*
+ * Specifies CORS rules for the Table service. You can include up to five
+ * CorsRule elements in the request. If no CorsRule elements are included
+ * in the request body, all CORS rules will be deleted, and CORS will be
+ * disabled for the Table service.
+ */
+ @JsonProperty(value = "properties.cors")
+ private CorsRules cors;
+
+ /**
+ * Get the cors property: Specifies CORS rules for the Table service. You can include up to five CorsRule elements
+ * in the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and
+ * CORS will be disabled for the Table service.
+ *
+ * @return the cors value.
+ */
+ public CorsRules cors() {
+ return this.cors;
+ }
+
+ /**
+ * Set the cors property: Specifies CORS rules for the Table service. You can include up to five CorsRule elements
+ * in the request. If no CorsRule elements are included in the request body, all CORS rules will be deleted, and
+ * CORS will be disabled for the Table service.
+ *
+ * @param cors the cors value to set.
+ * @return the TableServicePropertiesInner object itself.
+ */
+ public TableServicePropertiesInner withCors(CorsRules cors) {
+ this.cors = cors;
+ return this;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (cors() != null) {
+ cors().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/UsageInner.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/UsageInner.java
new file mode 100644
index 0000000000000..c8e9685e73c28
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/UsageInner.java
@@ -0,0 +1,90 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.models.UsageName;
+import com.azure.resourcemanager.storage.generated.models.UsageUnit;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Describes Storage Resource Usage. */
+@Immutable
+public final class UsageInner {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(UsageInner.class);
+
+ /*
+ * Gets the unit of measurement.
+ */
+ @JsonProperty(value = "unit", access = JsonProperty.Access.WRITE_ONLY)
+ private UsageUnit unit;
+
+ /*
+ * Gets the current count of the allocated resources in the subscription.
+ */
+ @JsonProperty(value = "currentValue", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer currentValue;
+
+ /*
+ * Gets the maximum count of the resources that can be allocated in the
+ * subscription.
+ */
+ @JsonProperty(value = "limit", access = JsonProperty.Access.WRITE_ONLY)
+ private Integer limit;
+
+ /*
+ * Gets the name of the type of usage.
+ */
+ @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+ private UsageName name;
+
+ /**
+ * Get the unit property: Gets the unit of measurement.
+ *
+ * @return the unit value.
+ */
+ public UsageUnit unit() {
+ return this.unit;
+ }
+
+ /**
+ * Get the currentValue property: Gets the current count of the allocated resources in the subscription.
+ *
+ * @return the currentValue value.
+ */
+ public Integer currentValue() {
+ return this.currentValue;
+ }
+
+ /**
+ * Get the limit property: Gets the maximum count of the resources that can be allocated in the subscription.
+ *
+ * @return the limit value.
+ */
+ public Integer limit() {
+ return this.limit;
+ }
+
+ /**
+ * Get the name property: Gets the name of the type of usage.
+ *
+ * @return the name value.
+ */
+ public UsageName name() {
+ return this.name;
+ }
+
+ /**
+ * Validates the instance.
+ *
+ * @throws IllegalArgumentException thrown if the instance is not valid.
+ */
+ public void validate() {
+ if (name() != null) {
+ name().validate();
+ }
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/package-info.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/package-info.java
new file mode 100644
index 0000000000000..dec7a10810ff7
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/models/package-info.java
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/** Package containing the inner data models for StorageManagementClient. The Azure Storage Management API. */
+package com.azure.resourcemanager.storage.generated.fluent.models;
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/package-info.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/package-info.java
new file mode 100644
index 0000000000000..e75af1291733e
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/fluent/package-info.java
@@ -0,0 +1,6 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+/** Package containing the service clients for StorageManagementClient. The Azure Storage Management API. */
+package com.azure.resourcemanager.storage.generated.fluent;
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainerImpl.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainerImpl.java
new file mode 100644
index 0000000000000..559b844229bc9
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainerImpl.java
@@ -0,0 +1,282 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.implementation;
+
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.storage.generated.fluent.models.BlobContainerInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LegalHoldInner;
+import com.azure.resourcemanager.storage.generated.models.BlobContainer;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicyProperties;
+import com.azure.resourcemanager.storage.generated.models.ImmutableStorageWithVersioning;
+import com.azure.resourcemanager.storage.generated.models.LeaseContainerRequest;
+import com.azure.resourcemanager.storage.generated.models.LeaseContainerResponse;
+import com.azure.resourcemanager.storage.generated.models.LeaseDuration;
+import com.azure.resourcemanager.storage.generated.models.LeaseState;
+import com.azure.resourcemanager.storage.generated.models.LeaseStatus;
+import com.azure.resourcemanager.storage.generated.models.LegalHold;
+import com.azure.resourcemanager.storage.generated.models.LegalHoldProperties;
+import com.azure.resourcemanager.storage.generated.models.PublicAccess;
+import java.time.OffsetDateTime;
+import java.util.Collections;
+import java.util.Map;
+
+public final class BlobContainerImpl implements BlobContainer, BlobContainer.Definition, BlobContainer.Update {
+ private BlobContainerInner innerObject;
+
+ private final com.azure.resourcemanager.storage.generated.StorageManager serviceManager;
+
+ public String id() {
+ return this.innerModel().id();
+ }
+
+ public String name() {
+ return this.innerModel().name();
+ }
+
+ public String type() {
+ return this.innerModel().type();
+ }
+
+ public String etag() {
+ return this.innerModel().etag();
+ }
+
+ public String version() {
+ return this.innerModel().version();
+ }
+
+ public Boolean deleted() {
+ return this.innerModel().deleted();
+ }
+
+ public OffsetDateTime deletedTime() {
+ return this.innerModel().deletedTime();
+ }
+
+ public Integer remainingRetentionDays() {
+ return this.innerModel().remainingRetentionDays();
+ }
+
+ public String defaultEncryptionScope() {
+ return this.innerModel().defaultEncryptionScope();
+ }
+
+ public Boolean denyEncryptionScopeOverride() {
+ return this.innerModel().denyEncryptionScopeOverride();
+ }
+
+ public PublicAccess publicAccess() {
+ return this.innerModel().publicAccess();
+ }
+
+ public OffsetDateTime lastModifiedTime() {
+ return this.innerModel().lastModifiedTime();
+ }
+
+ public LeaseStatus leaseStatus() {
+ return this.innerModel().leaseStatus();
+ }
+
+ public LeaseState leaseState() {
+ return this.innerModel().leaseState();
+ }
+
+ public LeaseDuration leaseDuration() {
+ return this.innerModel().leaseDuration();
+ }
+
+ public Map metadata() {
+ Map inner = this.innerModel().metadata();
+ if (inner != null) {
+ return Collections.unmodifiableMap(inner);
+ } else {
+ return Collections.emptyMap();
+ }
+ }
+
+ public ImmutabilityPolicyProperties immutabilityPolicy() {
+ return this.innerModel().immutabilityPolicy();
+ }
+
+ public LegalHoldProperties legalHold() {
+ return this.innerModel().legalHold();
+ }
+
+ public Boolean hasLegalHold() {
+ return this.innerModel().hasLegalHold();
+ }
+
+ public Boolean hasImmutabilityPolicy() {
+ return this.innerModel().hasImmutabilityPolicy();
+ }
+
+ public ImmutableStorageWithVersioning immutableStorageWithVersioning() {
+ return this.innerModel().immutableStorageWithVersioning();
+ }
+
+ public BlobContainerInner innerModel() {
+ return this.innerObject;
+ }
+
+ private com.azure.resourcemanager.storage.generated.StorageManager manager() {
+ return this.serviceManager;
+ }
+
+ private String resourceGroupName;
+
+ private String accountName;
+
+ private String containerName;
+
+ public BlobContainerImpl withExistingStorageAccount(String resourceGroupName, String accountName) {
+ this.resourceGroupName = resourceGroupName;
+ this.accountName = accountName;
+ return this;
+ }
+
+ public BlobContainer create() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .createWithResponse(resourceGroupName, accountName, containerName, this.innerModel(), Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public BlobContainer create(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .createWithResponse(resourceGroupName, accountName, containerName, this.innerModel(), context)
+ .getValue();
+ return this;
+ }
+
+ BlobContainerImpl(String name, com.azure.resourcemanager.storage.generated.StorageManager serviceManager) {
+ this.innerObject = new BlobContainerInner();
+ this.serviceManager = serviceManager;
+ this.containerName = name;
+ }
+
+ public BlobContainerImpl update() {
+ return this;
+ }
+
+ public BlobContainer apply() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .updateWithResponse(resourceGroupName, accountName, containerName, this.innerModel(), Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public BlobContainer apply(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .updateWithResponse(resourceGroupName, accountName, containerName, this.innerModel(), context)
+ .getValue();
+ return this;
+ }
+
+ BlobContainerImpl(
+ BlobContainerInner innerObject, com.azure.resourcemanager.storage.generated.StorageManager serviceManager) {
+ this.innerObject = innerObject;
+ this.serviceManager = serviceManager;
+ this.resourceGroupName = Utils.getValueFromIdByName(innerObject.id(), "resourceGroups");
+ this.accountName = Utils.getValueFromIdByName(innerObject.id(), "storageAccounts");
+ this.containerName = Utils.getValueFromIdByName(innerObject.id(), "containers");
+ }
+
+ public BlobContainer refresh() {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .getWithResponse(resourceGroupName, accountName, containerName, Context.NONE)
+ .getValue();
+ return this;
+ }
+
+ public BlobContainer refresh(Context context) {
+ this.innerObject =
+ serviceManager
+ .serviceClient()
+ .getBlobContainers()
+ .getWithResponse(resourceGroupName, accountName, containerName, context)
+ .getValue();
+ return this;
+ }
+
+ public LegalHold setLegalHold(LegalHoldInner legalHold) {
+ return serviceManager.blobContainers().setLegalHold(resourceGroupName, accountName, containerName, legalHold);
+ }
+
+ public Response setLegalHoldWithResponse(LegalHoldInner legalHold, Context context) {
+ return serviceManager
+ .blobContainers()
+ .setLegalHoldWithResponse(resourceGroupName, accountName, containerName, legalHold, context);
+ }
+
+ public LegalHold clearLegalHold(LegalHoldInner legalHold) {
+ return serviceManager.blobContainers().clearLegalHold(resourceGroupName, accountName, containerName, legalHold);
+ }
+
+ public Response clearLegalHoldWithResponse(LegalHoldInner legalHold, Context context) {
+ return serviceManager
+ .blobContainers()
+ .clearLegalHoldWithResponse(resourceGroupName, accountName, containerName, legalHold, context);
+ }
+
+ public LeaseContainerResponse lease() {
+ return serviceManager.blobContainers().lease(resourceGroupName, accountName, containerName);
+ }
+
+ public Response leaseWithResponse(LeaseContainerRequest parameters, Context context) {
+ return serviceManager
+ .blobContainers()
+ .leaseWithResponse(resourceGroupName, accountName, containerName, parameters, context);
+ }
+
+ public void objectLevelWorm() {
+ serviceManager.blobContainers().objectLevelWorm(resourceGroupName, accountName, containerName);
+ }
+
+ public void objectLevelWorm(Context context) {
+ serviceManager.blobContainers().objectLevelWorm(resourceGroupName, accountName, containerName, context);
+ }
+
+ public BlobContainerImpl withDefaultEncryptionScope(String defaultEncryptionScope) {
+ this.innerModel().withDefaultEncryptionScope(defaultEncryptionScope);
+ return this;
+ }
+
+ public BlobContainerImpl withDenyEncryptionScopeOverride(Boolean denyEncryptionScopeOverride) {
+ this.innerModel().withDenyEncryptionScopeOverride(denyEncryptionScopeOverride);
+ return this;
+ }
+
+ public BlobContainerImpl withPublicAccess(PublicAccess publicAccess) {
+ this.innerModel().withPublicAccess(publicAccess);
+ return this;
+ }
+
+ public BlobContainerImpl withMetadata(Map metadata) {
+ this.innerModel().withMetadata(metadata);
+ return this;
+ }
+
+ public BlobContainerImpl withImmutableStorageWithVersioning(
+ ImmutableStorageWithVersioning immutableStorageWithVersioning) {
+ this.innerModel().withImmutableStorageWithVersioning(immutableStorageWithVersioning);
+ return this;
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainersClientImpl.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainersClientImpl.java
new file mode 100644
index 0000000000000..6c529ace9f86f
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainersClientImpl.java
@@ -0,0 +1,3653 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.implementation;
+
+import com.azure.core.annotation.BodyParam;
+import com.azure.core.annotation.Delete;
+import com.azure.core.annotation.ExpectedResponses;
+import com.azure.core.annotation.Get;
+import com.azure.core.annotation.HeaderParam;
+import com.azure.core.annotation.Headers;
+import com.azure.core.annotation.Host;
+import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.Patch;
+import com.azure.core.annotation.PathParam;
+import com.azure.core.annotation.Post;
+import com.azure.core.annotation.Put;
+import com.azure.core.annotation.QueryParam;
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceInterface;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.annotation.UnexpectedResponseExceptionType;
+import com.azure.core.http.rest.PagedFlux;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.PagedResponse;
+import com.azure.core.http.rest.PagedResponseBase;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.RestProxy;
+import com.azure.core.management.exception.ManagementException;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.FluxUtil;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.core.util.polling.PollerFlux;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.storage.generated.fluent.BlobContainersClient;
+import com.azure.resourcemanager.storage.generated.fluent.models.BlobContainerInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ImmutabilityPolicyInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LeaseContainerResponseInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LegalHoldInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ListContainerItemInner;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersCreateOrUpdateImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersDeleteImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersExtendImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersGetImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersLockImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.LeaseContainerRequest;
+import com.azure.resourcemanager.storage.generated.models.ListContainerItems;
+import com.azure.resourcemanager.storage.generated.models.ListContainersInclude;
+import java.nio.ByteBuffer;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+/** An instance of this class provides access to all the operations defined in BlobContainersClient. */
+public final class BlobContainersClientImpl implements BlobContainersClient {
+ private final ClientLogger logger = new ClientLogger(BlobContainersClientImpl.class);
+
+ /** The proxy service used to perform REST calls. */
+ private final BlobContainersService service;
+
+ /** The service client containing this operation class. */
+ private final StorageManagementClientImpl client;
+
+ /**
+ * Initializes an instance of BlobContainersClientImpl.
+ *
+ * @param client the instance of the service client containing this operation class.
+ */
+ BlobContainersClientImpl(StorageManagementClientImpl client) {
+ this.service =
+ RestProxy.create(BlobContainersService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for StorageManagementClientBlobContainers to be used by the proxy service
+ * to perform REST calls.
+ */
+ @Host("{$host}")
+ @ServiceInterface(name = "StorageManagementCli")
+ private interface BlobContainersService {
+ @Headers({"Content-Type: application/json"})
+ @Get(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> list(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @QueryParam("$maxpagesize") String maxpagesize,
+ @QueryParam("$filter") String filter,
+ @QueryParam("$include") ListContainersInclude include,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Put(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}")
+ @ExpectedResponses({200, 201})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> create(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @BodyParam("application/json") BlobContainerInner blobContainer,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Patch(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> update(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @BodyParam("application/json") BlobContainerInner blobContainer,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> get(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Accept: application/json;q=0.9", "Content-Type: application/json"})
+ @Delete(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}")
+ @ExpectedResponses({200, 204})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> delete(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/setLegalHold")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> setLegalHold(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @BodyParam("application/json") LegalHoldInner legalHold,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/clearLegalHold")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> clearLegalHold(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @BodyParam("application/json") LegalHoldInner legalHold,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Put(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies"
+ + "/{immutabilityPolicyName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono createOrUpdateImmutabilityPolicy(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @PathParam("immutabilityPolicyName") String immutabilityPolicyName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("If-Match") String ifMatch,
+ @BodyParam("application/json") ImmutabilityPolicyInner parameters,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies"
+ + "/{immutabilityPolicyName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono getImmutabilityPolicy(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @PathParam("immutabilityPolicyName") String immutabilityPolicyName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("If-Match") String ifMatch,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Delete(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies"
+ + "/{immutabilityPolicyName}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono deleteImmutabilityPolicy(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @PathParam("immutabilityPolicyName") String immutabilityPolicyName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("If-Match") String ifMatch,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies"
+ + "/default/lock")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono lockImmutabilityPolicy(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("If-Match") String ifMatch,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/immutabilityPolicies"
+ + "/default/extend")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono extendImmutabilityPolicy(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("If-Match") String ifMatch,
+ @BodyParam("application/json") ImmutabilityPolicyInner parameters,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/lease")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> lease(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @BodyParam("application/json") LeaseContainerRequest parameters,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Post(
+ "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage"
+ + "/storageAccounts/{accountName}/blobServices/default/containers/{containerName}/migrate")
+ @ExpectedResponses({200, 202})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono>> objectLevelWorm(
+ @HostParam("$host") String endpoint,
+ @PathParam("resourceGroupName") String resourceGroupName,
+ @PathParam("accountName") String accountName,
+ @PathParam("containerName") String containerName,
+ @QueryParam("api-version") String apiVersion,
+ @PathParam("subscriptionId") String subscriptionId,
+ @HeaderParam("Accept") String accept,
+ Context context);
+
+ @Headers({"Content-Type: application/json"})
+ @Get("{nextLink}")
+ @ExpectedResponses({200})
+ @UnexpectedResponseExceptionType(ManagementException.class)
+ Mono> listNext(
+ @PathParam(value = "nextLink", encoded = true) String nextLink,
+ @HostParam("$host") String endpoint,
+ @HeaderParam("Accept") String accept,
+ Context context);
+ }
+
+ /**
+ * Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
+ * token.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional. Specified maximum number of containers that can be included in the list.
+ * @param filter Optional. When specified, only container names starting with the filter will be listed.
+ * @param include Optional, used to include the properties for soft deleted blob containers.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listSinglePageAsync(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .list(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ maxpagesize,
+ filter,
+ include,
+ accept,
+ context))
+ .>map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
+ * token.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional. Specified maximum number of containers that can be included in the list.
+ * @param filter Optional. When specified, only container names starting with the filter will be listed.
+ * @param include Optional, used to include the properties for soft deleted blob containers.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listSinglePageAsync(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include,
+ Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .list(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ maxpagesize,
+ filter,
+ include,
+ accept,
+ context)
+ .map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null));
+ }
+
+ /**
+ * Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
+ * token.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional. Specified maximum number of containers that can be included in the list.
+ * @param filter Optional. When specified, only container names starting with the filter will be listed.
+ * @param include Optional, used to include the properties for soft deleted blob containers.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include) {
+ return new PagedFlux<>(
+ () -> listSinglePageAsync(resourceGroupName, accountName, maxpagesize, filter, include),
+ nextLink -> listNextSinglePageAsync(nextLink));
+ }
+
+ /**
+ * Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
+ * token.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync(String resourceGroupName, String accountName) {
+ final String maxpagesize = null;
+ final String filter = null;
+ final ListContainersInclude include = null;
+ return new PagedFlux<>(
+ () -> listSinglePageAsync(resourceGroupName, accountName, maxpagesize, filter, include),
+ nextLink -> listNextSinglePageAsync(nextLink));
+ }
+
+ /**
+ * Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
+ * token.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional. Specified maximum number of containers that can be included in the list.
+ * @param filter Optional. When specified, only container names starting with the filter will be listed.
+ * @param include Optional, used to include the properties for soft deleted blob containers.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ private PagedFlux listAsync(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include,
+ Context context) {
+ return new PagedFlux<>(
+ () -> listSinglePageAsync(resourceGroupName, accountName, maxpagesize, filter, include, context),
+ nextLink -> listNextSinglePageAsync(nextLink, context));
+ }
+
+ /**
+ * Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
+ * token.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ public PagedIterable list(String resourceGroupName, String accountName) {
+ final String maxpagesize = null;
+ final String filter = null;
+ final ListContainersInclude include = null;
+ return new PagedIterable<>(listAsync(resourceGroupName, accountName, maxpagesize, filter, include));
+ }
+
+ /**
+ * Lists all containers and does not support a prefix like data plane. Also SRP today does not return continuation
+ * token.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param maxpagesize Optional. Specified maximum number of containers that can be included in the list.
+ * @param filter Optional. When specified, only container names starting with the filter will be listed.
+ * @param include Optional, used to include the properties for soft deleted blob containers.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.COLLECTION)
+ public PagedIterable list(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include,
+ Context context) {
+ return new PagedIterable<>(listAsync(resourceGroupName, accountName, maxpagesize, filter, include, context));
+ }
+
+ /**
+ * Creates a new container under the specified account as described by request body. The container resource includes
+ * metadata and properties for that container. It does not include a list of the blobs contained by the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties of the blob container to create.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> createWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (blobContainer == null) {
+ return Mono.error(new IllegalArgumentException("Parameter blobContainer is required and cannot be null."));
+ } else {
+ blobContainer.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .create(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ blobContainer,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Creates a new container under the specified account as described by request body. The container resource includes
+ * metadata and properties for that container. It does not include a list of the blobs contained by the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties of the blob container to create.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> createWithResponseAsync(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ BlobContainerInner blobContainer,
+ Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (blobContainer == null) {
+ return Mono.error(new IllegalArgumentException("Parameter blobContainer is required and cannot be null."));
+ } else {
+ blobContainer.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .create(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ blobContainer,
+ accept,
+ context);
+ }
+
+ /**
+ * Creates a new container under the specified account as described by request body. The container resource includes
+ * metadata and properties for that container. It does not include a list of the blobs contained by the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties of the blob container to create.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono createAsync(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ return createWithResponseAsync(resourceGroupName, accountName, containerName, blobContainer)
+ .flatMap(
+ (Response res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Creates a new container under the specified account as described by request body. The container resource includes
+ * metadata and properties for that container. It does not include a list of the blobs contained by the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties of the blob container to create.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public BlobContainerInner create(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ return createAsync(resourceGroupName, accountName, containerName, blobContainer).block();
+ }
+
+ /**
+ * Creates a new container under the specified account as described by request body. The container resource includes
+ * metadata and properties for that container. It does not include a list of the blobs contained by the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties of the blob container to create.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response createWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ BlobContainerInner blobContainer,
+ Context context) {
+ return createWithResponseAsync(resourceGroupName, accountName, containerName, blobContainer, context).block();
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be
+ * unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties to update for the blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> updateWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (blobContainer == null) {
+ return Mono.error(new IllegalArgumentException("Parameter blobContainer is required and cannot be null."));
+ } else {
+ blobContainer.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .update(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ blobContainer,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be
+ * unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties to update for the blob container.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> updateWithResponseAsync(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ BlobContainerInner blobContainer,
+ Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (blobContainer == null) {
+ return Mono.error(new IllegalArgumentException("Parameter blobContainer is required and cannot be null."));
+ } else {
+ blobContainer.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .update(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ blobContainer,
+ accept,
+ context);
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be
+ * unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties to update for the blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono updateAsync(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ return updateWithResponseAsync(resourceGroupName, accountName, containerName, blobContainer)
+ .flatMap(
+ (Response res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be
+ * unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties to update for the blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public BlobContainerInner update(
+ String resourceGroupName, String accountName, String containerName, BlobContainerInner blobContainer) {
+ return updateAsync(resourceGroupName, accountName, containerName, blobContainer).block();
+ }
+
+ /**
+ * Updates container properties as specified in request body. Properties not mentioned in the request will be
+ * unchanged. Update fails if the specified container doesn't already exist.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param blobContainer Properties to update for the blob container.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 the blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response updateWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ BlobContainerInner blobContainer,
+ Context context) {
+ return updateWithResponseAsync(resourceGroupName, accountName, containerName, blobContainer, context).block();
+ }
+
+ /**
+ * Gets properties of a specified container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 a specified container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> getWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .get(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Gets properties of a specified container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 a specified container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> getWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .get(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ accept,
+ context);
+ }
+
+ /**
+ * Gets properties of a specified container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 a specified container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono getAsync(String resourceGroupName, String accountName, String containerName) {
+ return getWithResponseAsync(resourceGroupName, accountName, containerName)
+ .flatMap(
+ (Response res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Gets properties of a specified container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 a specified container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public BlobContainerInner get(String resourceGroupName, String accountName, String containerName) {
+ return getAsync(resourceGroupName, accountName, containerName).block();
+ }
+
+ /**
+ * Gets properties of a specified container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 a specified container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response getWithResponse(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ return getWithResponseAsync(resourceGroupName, accountName, containerName, context).block();
+ }
+
+ /**
+ * Deletes specified container under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ private Mono> deleteWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .delete(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Deletes specified container under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ private Mono> deleteWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ context = this.client.mergeContext(context);
+ return service
+ .delete(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ context);
+ }
+
+ /**
+ * Deletes specified container under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ private Mono deleteAsync(String resourceGroupName, String accountName, String containerName) {
+ return deleteWithResponseAsync(resourceGroupName, accountName, containerName)
+ .flatMap((Response res) -> Mono.empty());
+ }
+
+ /**
+ * Deletes specified container under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ public void delete(String resourceGroupName, String accountName, String containerName) {
+ deleteAsync(resourceGroupName, accountName, containerName).block();
+ }
+
+ /**
+ * Deletes specified container under its account.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ public Response deleteWithResponse(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ return deleteWithResponseAsync(resourceGroupName, accountName, containerName, context).block();
+ }
+
+ /**
+ * Sets legal hold tags. Setting the same tag results in an idempotent operation. SetLegalHold follows an append
+ * pattern and does not clear out the existing tags that are not specified in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be set to a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> setLegalHoldWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (legalHold == null) {
+ return Mono.error(new IllegalArgumentException("Parameter legalHold is required and cannot be null."));
+ } else {
+ legalHold.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .setLegalHold(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ legalHold,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Sets legal hold tags. Setting the same tag results in an idempotent operation. SetLegalHold follows an append
+ * pattern and does not clear out the existing tags that are not specified in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be set to a blob container.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> setLegalHoldWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (legalHold == null) {
+ return Mono.error(new IllegalArgumentException("Parameter legalHold is required and cannot be null."));
+ } else {
+ legalHold.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .setLegalHold(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ legalHold,
+ accept,
+ context);
+ }
+
+ /**
+ * Sets legal hold tags. Setting the same tag results in an idempotent operation. SetLegalHold follows an append
+ * pattern and does not clear out the existing tags that are not specified in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be set to a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono setLegalHoldAsync(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold) {
+ return setLegalHoldWithResponseAsync(resourceGroupName, accountName, containerName, legalHold)
+ .flatMap(
+ (Response res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Sets legal hold tags. Setting the same tag results in an idempotent operation. SetLegalHold follows an append
+ * pattern and does not clear out the existing tags that are not specified in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be set to a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public LegalHoldInner setLegalHold(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold) {
+ return setLegalHoldAsync(resourceGroupName, accountName, containerName, legalHold).block();
+ }
+
+ /**
+ * Sets legal hold tags. Setting the same tag results in an idempotent operation. SetLegalHold follows an append
+ * pattern and does not clear out the existing tags that are not specified in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be set to a blob container.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response setLegalHoldWithResponse(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold, Context context) {
+ return setLegalHoldWithResponseAsync(resourceGroupName, accountName, containerName, legalHold, context).block();
+ }
+
+ /**
+ * Clears legal hold tags. Clearing the same or non-existent tag results in an idempotent operation. ClearLegalHold
+ * clears out only the specified tags in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be clear from a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> clearLegalHoldWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (legalHold == null) {
+ return Mono.error(new IllegalArgumentException("Parameter legalHold is required and cannot be null."));
+ } else {
+ legalHold.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .clearLegalHold(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ legalHold,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Clears legal hold tags. Clearing the same or non-existent tag results in an idempotent operation. ClearLegalHold
+ * clears out only the specified tags in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be clear from a blob container.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> clearLegalHoldWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (legalHold == null) {
+ return Mono.error(new IllegalArgumentException("Parameter legalHold is required and cannot be null."));
+ } else {
+ legalHold.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .clearLegalHold(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ legalHold,
+ accept,
+ context);
+ }
+
+ /**
+ * Clears legal hold tags. Clearing the same or non-existent tag results in an idempotent operation. ClearLegalHold
+ * clears out only the specified tags in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be clear from a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono clearLegalHoldAsync(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold) {
+ return clearLegalHoldWithResponseAsync(resourceGroupName, accountName, containerName, legalHold)
+ .flatMap(
+ (Response res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Clears legal hold tags. Clearing the same or non-existent tag results in an idempotent operation. ClearLegalHold
+ * clears out only the specified tags in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be clear from a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public LegalHoldInner clearLegalHold(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold) {
+ return clearLegalHoldAsync(resourceGroupName, accountName, containerName, legalHold).block();
+ }
+
+ /**
+ * Clears legal hold tags. Clearing the same or non-existent tag results in an idempotent operation. ClearLegalHold
+ * clears out only the specified tags in the request.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param legalHold The LegalHold property that will be clear from a blob container.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 LegalHold property of a blob container.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response clearLegalHoldWithResponse(
+ String resourceGroupName, String accountName, String containerName, LegalHoldInner legalHold, Context context) {
+ return clearLegalHoldWithResponseAsync(resourceGroupName, accountName, containerName, legalHold, context)
+ .block();
+ }
+
+ /**
+ * Creates or updates an unlocked immutability policy. ETag in If-Match is honored if given but not required for
+ * this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param parameters The ImmutabilityPolicy Properties that will be created or updated to a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono
+ createOrUpdateImmutabilityPolicyWithResponseAsync(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ String ifMatch,
+ ImmutabilityPolicyInner parameters) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String immutabilityPolicyName = "default";
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .createOrUpdateImmutabilityPolicy(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ immutabilityPolicyName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ ifMatch,
+ parameters,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Creates or updates an unlocked immutability policy. ETag in If-Match is honored if given but not required for
+ * this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param parameters The ImmutabilityPolicy Properties that will be created or updated to a blob container.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono
+ createOrUpdateImmutabilityPolicyWithResponseAsync(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ String ifMatch,
+ ImmutabilityPolicyInner parameters,
+ Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String immutabilityPolicyName = "default";
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .createOrUpdateImmutabilityPolicy(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ immutabilityPolicyName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ ifMatch,
+ parameters,
+ accept,
+ context);
+ }
+
+ /**
+ * Creates or updates an unlocked immutability policy. ETag in If-Match is honored if given but not required for
+ * this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param parameters The ImmutabilityPolicy Properties that will be created or updated to a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono createOrUpdateImmutabilityPolicyAsync(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ String ifMatch,
+ ImmutabilityPolicyInner parameters) {
+ return createOrUpdateImmutabilityPolicyWithResponseAsync(
+ resourceGroupName, accountName, containerName, ifMatch, parameters)
+ .flatMap(
+ (BlobContainersCreateOrUpdateImmutabilityPolicyResponse res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Creates or updates an unlocked immutability policy. ETag in If-Match is honored if given but not required for
+ * this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono createOrUpdateImmutabilityPolicyAsync(
+ String resourceGroupName, String accountName, String containerName) {
+ final String ifMatch = null;
+ final ImmutabilityPolicyInner parameters = null;
+ return createOrUpdateImmutabilityPolicyWithResponseAsync(
+ resourceGroupName, accountName, containerName, ifMatch, parameters)
+ .flatMap(
+ (BlobContainersCreateOrUpdateImmutabilityPolicyResponse res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Creates or updates an unlocked immutability policy. ETag in If-Match is honored if given but not required for
+ * this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public ImmutabilityPolicyInner createOrUpdateImmutabilityPolicy(
+ String resourceGroupName, String accountName, String containerName) {
+ final String ifMatch = null;
+ final ImmutabilityPolicyInner parameters = null;
+ return createOrUpdateImmutabilityPolicyAsync(resourceGroupName, accountName, containerName, ifMatch, parameters)
+ .block();
+ }
+
+ /**
+ * Creates or updates an unlocked immutability policy. ETag in If-Match is honored if given but not required for
+ * this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param parameters The ImmutabilityPolicy Properties that will be created or updated to a blob container.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public BlobContainersCreateOrUpdateImmutabilityPolicyResponse createOrUpdateImmutabilityPolicyWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ String ifMatch,
+ ImmutabilityPolicyInner parameters,
+ Context context) {
+ return createOrUpdateImmutabilityPolicyWithResponseAsync(
+ resourceGroupName, accountName, containerName, ifMatch, parameters, context)
+ .block();
+ }
+
+ /**
+ * Gets the existing immutability policy along with the corresponding ETag in response headers and body.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 existing immutability policy along with the corresponding ETag in response headers and body.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono getImmutabilityPolicyWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String immutabilityPolicyName = "default";
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .getImmutabilityPolicy(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ immutabilityPolicyName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ ifMatch,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Gets the existing immutability policy along with the corresponding ETag in response headers and body.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 existing immutability policy along with the corresponding ETag in response headers and body.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono getImmutabilityPolicyWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, String ifMatch, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String immutabilityPolicyName = "default";
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .getImmutabilityPolicy(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ immutabilityPolicyName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ ifMatch,
+ accept,
+ context);
+ }
+
+ /**
+ * Gets the existing immutability policy along with the corresponding ETag in response headers and body.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 existing immutability policy along with the corresponding ETag in response headers and body.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono getImmutabilityPolicyAsync(
+ String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ return getImmutabilityPolicyWithResponseAsync(resourceGroupName, accountName, containerName, ifMatch)
+ .flatMap(
+ (BlobContainersGetImmutabilityPolicyResponse res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Gets the existing immutability policy along with the corresponding ETag in response headers and body.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 existing immutability policy along with the corresponding ETag in response headers and body.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono getImmutabilityPolicyAsync(
+ String resourceGroupName, String accountName, String containerName) {
+ final String ifMatch = null;
+ return getImmutabilityPolicyWithResponseAsync(resourceGroupName, accountName, containerName, ifMatch)
+ .flatMap(
+ (BlobContainersGetImmutabilityPolicyResponse res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Gets the existing immutability policy along with the corresponding ETag in response headers and body.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 existing immutability policy along with the corresponding ETag in response headers and body.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public ImmutabilityPolicyInner getImmutabilityPolicy(
+ String resourceGroupName, String accountName, String containerName) {
+ final String ifMatch = null;
+ return getImmutabilityPolicyAsync(resourceGroupName, accountName, containerName, ifMatch).block();
+ }
+
+ /**
+ * Gets the existing immutability policy along with the corresponding ETag in response headers and body.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 existing immutability policy along with the corresponding ETag in response headers and body.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public BlobContainersGetImmutabilityPolicyResponse getImmutabilityPolicyWithResponse(
+ String resourceGroupName, String accountName, String containerName, String ifMatch, Context context) {
+ return getImmutabilityPolicyWithResponseAsync(resourceGroupName, accountName, containerName, ifMatch, context)
+ .block();
+ }
+
+ /**
+ * Aborts an unlocked immutability policy. The response of delete has immutabilityPeriodSinceCreationInDays set to
+ * 0. ETag in If-Match is required for this operation. Deleting a locked immutability policy is not allowed, the
+ * only way is to delete the container after deleting all expired blobs inside the policy locked container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono deleteImmutabilityPolicyWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (ifMatch == null) {
+ return Mono.error(new IllegalArgumentException("Parameter ifMatch is required and cannot be null."));
+ }
+ final String immutabilityPolicyName = "default";
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .deleteImmutabilityPolicy(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ immutabilityPolicyName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ ifMatch,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Aborts an unlocked immutability policy. The response of delete has immutabilityPeriodSinceCreationInDays set to
+ * 0. ETag in If-Match is required for this operation. Deleting a locked immutability policy is not allowed, the
+ * only way is to delete the container after deleting all expired blobs inside the policy locked container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono deleteImmutabilityPolicyWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, String ifMatch, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (ifMatch == null) {
+ return Mono.error(new IllegalArgumentException("Parameter ifMatch is required and cannot be null."));
+ }
+ final String immutabilityPolicyName = "default";
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .deleteImmutabilityPolicy(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ immutabilityPolicyName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ ifMatch,
+ accept,
+ context);
+ }
+
+ /**
+ * Aborts an unlocked immutability policy. The response of delete has immutabilityPeriodSinceCreationInDays set to
+ * 0. ETag in If-Match is required for this operation. Deleting a locked immutability policy is not allowed, the
+ * only way is to delete the container after deleting all expired blobs inside the policy locked container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono deleteImmutabilityPolicyAsync(
+ String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ return deleteImmutabilityPolicyWithResponseAsync(resourceGroupName, accountName, containerName, ifMatch)
+ .flatMap(
+ (BlobContainersDeleteImmutabilityPolicyResponse res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Aborts an unlocked immutability policy. The response of delete has immutabilityPeriodSinceCreationInDays set to
+ * 0. ETag in If-Match is required for this operation. Deleting a locked immutability policy is not allowed, the
+ * only way is to delete the container after deleting all expired blobs inside the policy locked container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public ImmutabilityPolicyInner deleteImmutabilityPolicy(
+ String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ return deleteImmutabilityPolicyAsync(resourceGroupName, accountName, containerName, ifMatch).block();
+ }
+
+ /**
+ * Aborts an unlocked immutability policy. The response of delete has immutabilityPeriodSinceCreationInDays set to
+ * 0. ETag in If-Match is required for this operation. Deleting a locked immutability policy is not allowed, the
+ * only way is to delete the container after deleting all expired blobs inside the policy locked container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public BlobContainersDeleteImmutabilityPolicyResponse deleteImmutabilityPolicyWithResponse(
+ String resourceGroupName, String accountName, String containerName, String ifMatch, Context context) {
+ return deleteImmutabilityPolicyWithResponseAsync(
+ resourceGroupName, accountName, containerName, ifMatch, context)
+ .block();
+ }
+
+ /**
+ * Sets the ImmutabilityPolicy to Locked state. The only action allowed on a Locked policy is
+ * ExtendImmutabilityPolicy action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono lockImmutabilityPolicyWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (ifMatch == null) {
+ return Mono.error(new IllegalArgumentException("Parameter ifMatch is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .lockImmutabilityPolicy(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ ifMatch,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Sets the ImmutabilityPolicy to Locked state. The only action allowed on a Locked policy is
+ * ExtendImmutabilityPolicy action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono lockImmutabilityPolicyWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, String ifMatch, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (ifMatch == null) {
+ return Mono.error(new IllegalArgumentException("Parameter ifMatch is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .lockImmutabilityPolicy(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ ifMatch,
+ accept,
+ context);
+ }
+
+ /**
+ * Sets the ImmutabilityPolicy to Locked state. The only action allowed on a Locked policy is
+ * ExtendImmutabilityPolicy action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono lockImmutabilityPolicyAsync(
+ String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ return lockImmutabilityPolicyWithResponseAsync(resourceGroupName, accountName, containerName, ifMatch)
+ .flatMap(
+ (BlobContainersLockImmutabilityPolicyResponse res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Sets the ImmutabilityPolicy to Locked state. The only action allowed on a Locked policy is
+ * ExtendImmutabilityPolicy action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public ImmutabilityPolicyInner lockImmutabilityPolicy(
+ String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ return lockImmutabilityPolicyAsync(resourceGroupName, accountName, containerName, ifMatch).block();
+ }
+
+ /**
+ * Sets the ImmutabilityPolicy to Locked state. The only action allowed on a Locked policy is
+ * ExtendImmutabilityPolicy action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public BlobContainersLockImmutabilityPolicyResponse lockImmutabilityPolicyWithResponse(
+ String resourceGroupName, String accountName, String containerName, String ifMatch, Context context) {
+ return lockImmutabilityPolicyWithResponseAsync(resourceGroupName, accountName, containerName, ifMatch, context)
+ .block();
+ }
+
+ /**
+ * Extends the immutabilityPeriodSinceCreationInDays of a locked immutabilityPolicy. The only action allowed on a
+ * Locked policy will be this action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param parameters The ImmutabilityPolicy Properties that will be extended for a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono extendImmutabilityPolicyWithResponseAsync(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ String ifMatch,
+ ImmutabilityPolicyInner parameters) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (ifMatch == null) {
+ return Mono.error(new IllegalArgumentException("Parameter ifMatch is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .extendImmutabilityPolicy(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ ifMatch,
+ parameters,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Extends the immutabilityPeriodSinceCreationInDays of a locked immutabilityPolicy. The only action allowed on a
+ * Locked policy will be this action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param parameters The ImmutabilityPolicy Properties that will be extended for a blob container.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono extendImmutabilityPolicyWithResponseAsync(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ String ifMatch,
+ ImmutabilityPolicyInner parameters,
+ Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (ifMatch == null) {
+ return Mono.error(new IllegalArgumentException("Parameter ifMatch is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .extendImmutabilityPolicy(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ ifMatch,
+ parameters,
+ accept,
+ context);
+ }
+
+ /**
+ * Extends the immutabilityPeriodSinceCreationInDays of a locked immutabilityPolicy. The only action allowed on a
+ * Locked policy will be this action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param parameters The ImmutabilityPolicy Properties that will be extended for a blob container.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono extendImmutabilityPolicyAsync(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ String ifMatch,
+ ImmutabilityPolicyInner parameters) {
+ return extendImmutabilityPolicyWithResponseAsync(
+ resourceGroupName, accountName, containerName, ifMatch, parameters)
+ .flatMap(
+ (BlobContainersExtendImmutabilityPolicyResponse res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Extends the immutabilityPeriodSinceCreationInDays of a locked immutabilityPolicy. The only action allowed on a
+ * Locked policy will be this action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono extendImmutabilityPolicyAsync(
+ String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ final ImmutabilityPolicyInner parameters = null;
+ return extendImmutabilityPolicyWithResponseAsync(
+ resourceGroupName, accountName, containerName, ifMatch, parameters)
+ .flatMap(
+ (BlobContainersExtendImmutabilityPolicyResponse res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * Extends the immutabilityPeriodSinceCreationInDays of a locked immutabilityPolicy. The only action allowed on a
+ * Locked policy will be this action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public ImmutabilityPolicyInner extendImmutabilityPolicy(
+ String resourceGroupName, String accountName, String containerName, String ifMatch) {
+ final ImmutabilityPolicyInner parameters = null;
+ return extendImmutabilityPolicyAsync(resourceGroupName, accountName, containerName, ifMatch, parameters)
+ .block();
+ }
+
+ /**
+ * Extends the immutabilityPeriodSinceCreationInDays of a locked immutabilityPolicy. The only action allowed on a
+ * Locked policy will be this action. ETag in If-Match is required for this operation.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param ifMatch The entity state (ETag) version of the immutability policy to update. A value of "*" can be used
+ * to apply the operation only if the immutability policy already exists. If omitted, this operation will always
+ * be applied.
+ * @param parameters The ImmutabilityPolicy Properties that will be extended for a blob container.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 ImmutabilityPolicy property of a blob container, including Id, resource name, resource type, Etag.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public BlobContainersExtendImmutabilityPolicyResponse extendImmutabilityPolicyWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ String ifMatch,
+ ImmutabilityPolicyInner parameters,
+ Context context) {
+ return extendImmutabilityPolicyWithResponseAsync(
+ resourceGroupName, accountName, containerName, ifMatch, parameters, context)
+ .block();
+ }
+
+ /**
+ * The Lease Container operation establishes and manages a lock on a container for delete operations. The lock
+ * duration can be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param parameters Lease Container request body.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return lease Container response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> leaseWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, LeaseContainerRequest parameters) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .lease(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ parameters,
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * The Lease Container operation establishes and manages a lock on a container for delete operations. The lock
+ * duration can be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param parameters Lease Container request body.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return lease Container response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> leaseWithResponseAsync(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ LeaseContainerRequest parameters,
+ Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ if (parameters != null) {
+ parameters.validate();
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .lease(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ parameters,
+ accept,
+ context);
+ }
+
+ /**
+ * The Lease Container operation establishes and manages a lock on a container for delete operations. The lock
+ * duration can be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param parameters Lease Container request body.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return lease Container response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono leaseAsync(
+ String resourceGroupName, String accountName, String containerName, LeaseContainerRequest parameters) {
+ return leaseWithResponseAsync(resourceGroupName, accountName, containerName, parameters)
+ .flatMap(
+ (Response res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * The Lease Container operation establishes and manages a lock on a container for delete operations. The lock
+ * duration can be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return lease Container response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono leaseAsync(
+ String resourceGroupName, String accountName, String containerName) {
+ final LeaseContainerRequest parameters = null;
+ return leaseWithResponseAsync(resourceGroupName, accountName, containerName, parameters)
+ .flatMap(
+ (Response res) -> {
+ if (res.getValue() != null) {
+ return Mono.just(res.getValue());
+ } else {
+ return Mono.empty();
+ }
+ });
+ }
+
+ /**
+ * The Lease Container operation establishes and manages a lock on a container for delete operations. The lock
+ * duration can be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return lease Container response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public LeaseContainerResponseInner lease(String resourceGroupName, String accountName, String containerName) {
+ final LeaseContainerRequest parameters = null;
+ return leaseAsync(resourceGroupName, accountName, containerName, parameters).block();
+ }
+
+ /**
+ * The Lease Container operation establishes and manages a lock on a container for delete operations. The lock
+ * duration can be 15 to 60 seconds, or can be infinite.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param parameters Lease Container request body.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws ManagementException thrown if the request is rejected by server.
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+ * @return lease Container response schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ public Response leaseWithResponse(
+ String resourceGroupName,
+ String accountName,
+ String containerName,
+ LeaseContainerRequest parameters,
+ Context context) {
+ return leaseWithResponseAsync(resourceGroupName, accountName, containerName, parameters, context).block();
+ }
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ private Mono>> objectLevelWormWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(
+ context ->
+ service
+ .objectLevelWorm(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ accept,
+ context))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ private Mono>> objectLevelWormWithResponseAsync(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ if (resourceGroupName == null) {
+ return Mono
+ .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
+ }
+ if (accountName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter accountName is required and cannot be null."));
+ }
+ if (containerName == null) {
+ return Mono.error(new IllegalArgumentException("Parameter containerName is required and cannot be null."));
+ }
+ if (this.client.getSubscriptionId() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getSubscriptionId() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .objectLevelWorm(
+ this.client.getEndpoint(),
+ resourceGroupName,
+ accountName,
+ containerName,
+ this.client.getApiVersion(),
+ this.client.getSubscriptionId(),
+ accept,
+ context);
+ }
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ private PollerFlux, Void> beginObjectLevelWormAsync(
+ String resourceGroupName, String accountName, String containerName) {
+ Mono>> mono =
+ objectLevelWormWithResponseAsync(resourceGroupName, accountName, containerName);
+ return this
+ .client
+ .getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, Context.NONE);
+ }
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ private PollerFlux, Void> beginObjectLevelWormAsync(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ context = this.client.mergeContext(context);
+ Mono>> mono =
+ objectLevelWormWithResponseAsync(resourceGroupName, accountName, containerName, context);
+ return this
+ .client
+ .getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, context);
+ }
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ public SyncPoller, Void> beginObjectLevelWorm(
+ String resourceGroupName, String accountName, String containerName) {
+ return beginObjectLevelWormAsync(resourceGroupName, accountName, containerName).getSyncPoller();
+ }
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ public SyncPoller, Void> beginObjectLevelWorm(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ return beginObjectLevelWormAsync(resourceGroupName, accountName, containerName, context).getSyncPoller();
+ }
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ private Mono objectLevelWormAsync(String resourceGroupName, String accountName, String containerName) {
+ return beginObjectLevelWormAsync(resourceGroupName, accountName, containerName)
+ .last()
+ .flatMap(this.client::getLroFinalResultOrError);
+ }
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ private Mono objectLevelWormAsync(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ return beginObjectLevelWormAsync(resourceGroupName, accountName, containerName, context)
+ .last()
+ .flatMap(this.client::getLroFinalResultOrError);
+ }
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ public void objectLevelWorm(String resourceGroupName, String accountName, String containerName) {
+ objectLevelWormAsync(resourceGroupName, accountName, containerName).block();
+ }
+
+ /**
+ * This operation migrates a blob container from container level WORM to object level immutability enabled
+ * container. Prerequisites require a container level immutability policy either in locked or unlocked state,
+ * Account level versioning must be enabled and there should be no Legal hold on the container.
+ *
+ * @param resourceGroupName The name of the resource group within the user's subscription. The name is case
+ * insensitive.
+ * @param accountName The name of the storage account within the specified resource group. Storage account names
+ * must be between 3 and 24 characters in length and use numbers and lower-case letters only.
+ * @param containerName The name of the blob container within the specified storage account. Blob container names
+ * must be between 3 and 63 characters in length and use numbers, lower-case letters and dash (-) only. Every
+ * dash (-) character must be immediately preceded and followed by a letter or number.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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)
+ public void objectLevelWorm(String resourceGroupName, String accountName, String containerName, Context context) {
+ objectLevelWormAsync(resourceGroupName, accountName, containerName, context).block();
+ }
+
+ /**
+ * Get the next page of items.
+ *
+ * @param nextLink The nextLink parameter.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listNextSinglePageAsync(String nextLink) {
+ if (nextLink == null) {
+ return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+ }
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ return FluxUtil
+ .withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context))
+ .>map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null))
+ .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
+ }
+
+ /**
+ * Get the next page of items.
+ *
+ * @param nextLink The nextLink parameter.
+ * @param context The context to associate with this operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation.
+ * @throws 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 schema.
+ */
+ @ServiceMethod(returns = ReturnType.SINGLE)
+ private Mono> listNextSinglePageAsync(String nextLink, Context context) {
+ if (nextLink == null) {
+ return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null."));
+ }
+ if (this.client.getEndpoint() == null) {
+ return Mono
+ .error(
+ new IllegalArgumentException(
+ "Parameter this.client.getEndpoint() is required and cannot be null."));
+ }
+ final String accept = "application/json";
+ context = this.client.mergeContext(context);
+ return service
+ .listNext(nextLink, this.client.getEndpoint(), accept, context)
+ .map(
+ res ->
+ new PagedResponseBase<>(
+ res.getRequest(),
+ res.getStatusCode(),
+ res.getHeaders(),
+ res.getValue().value(),
+ res.getValue().nextLink(),
+ null));
+ }
+}
diff --git a/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainersImpl.java b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainersImpl.java
new file mode 100644
index 0000000000000..23c23bb418a77
--- /dev/null
+++ b/sdk/storage/azure-resourcemanager-storage-generated/src/main/java/com/azure/resourcemanager/storage/generated/implementation/BlobContainersImpl.java
@@ -0,0 +1,547 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.storage.generated.implementation;
+
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.SimpleResponse;
+import com.azure.core.util.Context;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.storage.generated.fluent.BlobContainersClient;
+import com.azure.resourcemanager.storage.generated.fluent.models.BlobContainerInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ImmutabilityPolicyInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LeaseContainerResponseInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.LegalHoldInner;
+import com.azure.resourcemanager.storage.generated.fluent.models.ListContainerItemInner;
+import com.azure.resourcemanager.storage.generated.models.BlobContainer;
+import com.azure.resourcemanager.storage.generated.models.BlobContainers;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersDeleteImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersExtendImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersGetImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.BlobContainersLockImmutabilityPolicyResponse;
+import com.azure.resourcemanager.storage.generated.models.ImmutabilityPolicy;
+import com.azure.resourcemanager.storage.generated.models.LeaseContainerRequest;
+import com.azure.resourcemanager.storage.generated.models.LeaseContainerResponse;
+import com.azure.resourcemanager.storage.generated.models.LegalHold;
+import com.azure.resourcemanager.storage.generated.models.ListContainerItem;
+import com.azure.resourcemanager.storage.generated.models.ListContainersInclude;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+public final class BlobContainersImpl implements BlobContainers {
+ @JsonIgnore private final ClientLogger logger = new ClientLogger(BlobContainersImpl.class);
+
+ private final BlobContainersClient innerClient;
+
+ private final com.azure.resourcemanager.storage.generated.StorageManager serviceManager;
+
+ public BlobContainersImpl(
+ BlobContainersClient innerClient, com.azure.resourcemanager.storage.generated.StorageManager serviceManager) {
+ this.innerClient = innerClient;
+ this.serviceManager = serviceManager;
+ }
+
+ public PagedIterable list(String resourceGroupName, String accountName) {
+ PagedIterable inner = this.serviceClient().list(resourceGroupName, accountName);
+ return Utils.mapPage(inner, inner1 -> new ListContainerItemImpl(inner1, this.manager()));
+ }
+
+ public PagedIterable list(
+ String resourceGroupName,
+ String accountName,
+ String maxpagesize,
+ String filter,
+ ListContainersInclude include,
+ Context context) {
+ PagedIterable inner =
+ this.serviceClient().list(resourceGroupName, accountName, maxpagesize, filter, include, context);
+ return Utils.mapPage(inner, inner1 -> new ListContainerItemImpl(inner1, this.manager()));
+ }
+
+ public BlobContainer get(String resourceGroupName, String accountName, String containerName) {
+ BlobContainerInner inner = this.serviceClient().get(resourceGroupName, accountName, containerName);
+ if (inner != null) {
+ return new BlobContainerImpl(inner, this.manager());
+ } else {
+ return null;
+ }
+ }
+
+ public Response getWithResponse(
+ String resourceGroupName, String accountName, String containerName, Context context) {
+ Response inner =
+ this.serviceClient().getWithResponse(resourceGroupName, accountName, containerName, context);
+ if (inner != null) {
+ return new SimpleResponse<>(
+ inner.getRequest(),
+ inner.getStatusCode(),
+ inner.getHeaders(),
+ new BlobContainerImpl(inner.getValue(), this.manager()));
+ } else {
+ return null;
+ }
+ }
+
+ public void delete(String resourceGroupName, String accountName, String containerName) {
+ this.serviceClient().delete(resourceGroupName, accountName, containerName);
+ }
+
+ public Response