From d906a4bf4d752742e66768dbb84f20845570a51e Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Tue, 11 Nov 2025 11:09:10 -0500 Subject: [PATCH 1/2] Files Provisioned V2 Guardrails --- .../azure-storage-file-share/CHANGELOG.md | 1 + .../_generated/_azure_file_storage.py | 2 +- .../fileshare/_generated/_configuration.py | 4 +- .../_generated/_utils/serialization.py | 2 +- .../_generated/aio/_azure_file_storage.py | 2 +- .../_generated/aio/_configuration.py | 4 +- .../aio/operations/_directory_operations.py | 45 ++++-- .../aio/operations/_file_operations.py | 105 ++++++++++--- .../aio/operations/_service_operations.py | 20 ++- .../aio/operations/_share_operations.py | 102 ++++++++++-- .../models/_azure_file_storage_enums.py | 7 + .../_generated/models/_models_py3.py | 7 + .../operations/_directory_operations.py | 63 +++++--- .../_generated/operations/_file_operations.py | 147 +++++++++++++----- .../operations/_service_operations.py | 28 +++- .../operations/_share_operations.py | 146 +++++++++++++---- 16 files changed, 525 insertions(+), 160 deletions(-) diff --git a/sdk/storage/azure-storage-file-share/CHANGELOG.md b/sdk/storage/azure-storage-file-share/CHANGELOG.md index fd4d06a1dcfc..58e2436387d2 100644 --- a/sdk/storage/azure-storage-file-share/CHANGELOG.md +++ b/sdk/storage/azure-storage-file-share/CHANGELOG.md @@ -4,6 +4,7 @@ ### Features Added - Added support for service version 2026-04-06. +- Added support for improved error handling for file share provisioning. ## 12.24.0b1 (Unreleased) diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_azure_file_storage.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_azure_file_storage.py index 3807bbe8402e..41b09ccfff1e 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_azure_file_storage.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_azure_file_storage.py @@ -45,7 +45,7 @@ class AzureFileStorage: # pylint: disable=client-accepts-api-version-keyword URI. Default value is None. :type allow_source_trailing_dot: bool :keyword version: Specifies the version of the operation to use for this request. Default value - is "2026-02-06". Note that overriding this default value may result in unsupported behavior. + is "2026-04-06". Note that overriding this default value may result in unsupported behavior. :paramtype version: str :keyword file_range_write_from_url: Only update is supported: - Update: Writes the bytes downloaded from the source url into the specified range. Default value is "update". Note that diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_configuration.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_configuration.py index 827328f9ffe3..a3f518a330c7 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_configuration.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_configuration.py @@ -33,7 +33,7 @@ class AzureFileStorageConfiguration: # pylint: disable=too-many-instance-attrib URI. Default value is None. :type allow_source_trailing_dot: bool :keyword version: Specifies the version of the operation to use for this request. Default value - is "2026-02-06". Note that overriding this default value may result in unsupported behavior. + is "2026-04-06". Note that overriding this default value may result in unsupported behavior. :paramtype version: str :keyword file_range_write_from_url: Only update is supported: - Update: Writes the bytes downloaded from the source url into the specified range. Default value is "update". Note that @@ -49,7 +49,7 @@ def __init__( allow_source_trailing_dot: Optional[bool] = None, **kwargs: Any ) -> None: - version: Literal["2026-02-06"] = kwargs.pop("version", "2026-02-06") + version: Literal["2026-04-06"] = kwargs.pop("version", "2026-04-06") file_range_write_from_url: Literal["update"] = kwargs.pop("file_range_write_from_url", "update") if url is None: diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_utils/serialization.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_utils/serialization.py index 5f250836cf4b..ff543ed937ff 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_utils/serialization.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/_utils/serialization.py @@ -787,7 +787,7 @@ def serialize_data(self, data, data_type, **kwargs): # If dependencies is empty, try with current data class # It has to be a subclass of Enum anyway - enum_type = self.dependencies.get(data_type, data.__class__) + enum_type = self.dependencies.get(data_type, cast(type, data.__class__)) if issubclass(enum_type, Enum): return Serializer.serialize_enum(data, enum_obj=enum_type) diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/_azure_file_storage.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/_azure_file_storage.py index dce7ddfcba82..d98fd422f1ba 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/_azure_file_storage.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/_azure_file_storage.py @@ -45,7 +45,7 @@ class AzureFileStorage: # pylint: disable=client-accepts-api-version-keyword URI. Default value is None. :type allow_source_trailing_dot: bool :keyword version: Specifies the version of the operation to use for this request. Default value - is "2026-02-06". Note that overriding this default value may result in unsupported behavior. + is "2026-04-06". Note that overriding this default value may result in unsupported behavior. :paramtype version: str :keyword file_range_write_from_url: Only update is supported: - Update: Writes the bytes downloaded from the source url into the specified range. Default value is "update". Note that diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/_configuration.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/_configuration.py index e61a4ca5cf27..2e958f0ad919 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/_configuration.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/_configuration.py @@ -33,7 +33,7 @@ class AzureFileStorageConfiguration: # pylint: disable=too-many-instance-attrib URI. Default value is None. :type allow_source_trailing_dot: bool :keyword version: Specifies the version of the operation to use for this request. Default value - is "2026-02-06". Note that overriding this default value may result in unsupported behavior. + is "2026-04-06". Note that overriding this default value may result in unsupported behavior. :paramtype version: str :keyword file_range_write_from_url: Only update is supported: - Update: Writes the bytes downloaded from the source url into the specified range. Default value is "update". Note that @@ -49,7 +49,7 @@ def __init__( allow_source_trailing_dot: Optional[bool] = None, **kwargs: Any ) -> None: - version: Literal["2026-02-06"] = kwargs.pop("version", "2026-02-06") + version: Literal["2026-04-06"] = kwargs.pop("version", "2026-04-06") file_range_write_from_url: Literal["update"] = kwargs.pop("file_range_write_from_url", "update") if url is None: diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_directory_operations.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_directory_operations.py index 8e5828055421..cba4685c7443 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_directory_operations.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_directory_operations.py @@ -183,7 +183,10 @@ async def create( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -276,7 +279,10 @@ async def get_properties( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -363,7 +369,10 @@ async def delete(self, timeout: Optional[int] = None, **kwargs: Any) -> None: if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -486,7 +495,10 @@ async def set_properties( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -578,7 +590,10 @@ async def set_metadata( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -680,7 +695,10 @@ async def list_files_and_directories_segment( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -771,7 +789,10 @@ async def list_handles( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -861,7 +882,10 @@ async def force_close_handles( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1016,7 +1040,10 @@ async def rename( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_file_operations.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_file_operations.py index e403b4a6c167..e0296f2ea2f5 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_file_operations.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_file_operations.py @@ -259,7 +259,10 @@ async def create( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -376,7 +379,10 @@ async def download( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -511,7 +517,10 @@ async def get_properties( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -629,7 +638,10 @@ async def delete( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -787,7 +799,10 @@ async def set_http_headers( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -889,7 +904,10 @@ async def set_metadata( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -977,7 +995,10 @@ async def acquire_lease( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1055,7 +1076,10 @@ async def release_lease( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1142,7 +1166,10 @@ async def change_lease( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1228,7 +1255,10 @@ async def break_lease( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1361,7 +1391,10 @@ async def upload_range( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1496,7 +1529,10 @@ async def upload_range_from_url( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1602,7 +1638,10 @@ async def get_range_list( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1772,7 +1811,10 @@ async def start_copy( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1857,7 +1899,10 @@ async def abort_copy( if response.status_code not in [204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1938,7 +1983,10 @@ async def list_handles( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2023,7 +2071,10 @@ async def force_close_handles( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2183,7 +2234,10 @@ async def rename( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2312,7 +2366,10 @@ async def create_symbolic_link( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2405,7 +2462,10 @@ async def get_symbolic_link( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2495,7 +2555,10 @@ async def create_hard_link( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_service_operations.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_service_operations.py index 2d45d54e02ed..212bf8430546 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_service_operations.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_service_operations.py @@ -115,7 +115,10 @@ async def set_properties( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -175,7 +178,10 @@ async def get_properties(self, timeout: Optional[int] = None, **kwargs: Any) -> if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -264,7 +270,10 @@ async def list_shares_segment( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -345,7 +354,10 @@ async def get_user_delegation_key( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_share_operations.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_share_operations.py index 1f15a84ebc4a..491579cde044 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_share_operations.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/aio/operations/_share_operations.py @@ -85,6 +85,7 @@ async def create( paid_bursting_max_iops: Optional[int] = None, share_provisioned_iops: Optional[int] = None, share_provisioned_bandwidth_mibps: Optional[int] = None, + enable_smb_directory_lease: Optional[bool] = None, **kwargs: Any ) -> None: """Creates a new share under the specified account. If the share with the same name already @@ -131,6 +132,11 @@ async def create( in mebibytes per second (MiBps). If this is not specified, the provisioned bandwidth is set to value calculated based on recommendation formula. Default value is None. :type share_provisioned_bandwidth_mibps: int + :param enable_smb_directory_lease: SMB only, default is true. Specifies whether granting of + new directory leases for directories present in a share are to be enabled or disabled. An input + of true specifies that granting of new directory leases is to be allowed. An input of false + specifies that granting of new directory leases is to be blocked. Default value is None. + :type enable_smb_directory_lease: bool :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: @@ -163,6 +169,7 @@ async def create( paid_bursting_max_iops=paid_bursting_max_iops, share_provisioned_iops=share_provisioned_iops, share_provisioned_bandwidth_mibps=share_provisioned_bandwidth_mibps, + enable_smb_directory_lease=enable_smb_directory_lease, file_request_intent=self._config.file_request_intent, restype=restype, version=self._config.version, @@ -180,7 +187,10 @@ async def create( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -271,7 +281,10 @@ async def get_properties( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -335,6 +348,9 @@ async def get_properties( response_headers["x-ms-share-next-allowed-provisioned-bandwidth-downgrade-time"] = self._deserialize( "rfc-1123", response.headers.get("x-ms-share-next-allowed-provisioned-bandwidth-downgrade-time") ) + response_headers["x-ms-enable-smb-directory-lease"] = self._deserialize( + "bool", response.headers.get("x-ms-enable-smb-directory-lease") + ) if cls: return cls(pipeline_response, None, response_headers) # type: ignore @@ -409,7 +425,10 @@ async def delete( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -505,7 +524,10 @@ async def acquire_lease( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -593,7 +615,10 @@ async def release_lease( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -686,7 +711,10 @@ async def change_lease( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -774,7 +802,10 @@ async def renew_lease( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -876,7 +907,10 @@ async def break_lease( if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -949,7 +983,10 @@ async def create_snapshot( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1081,7 +1118,10 @@ async def create_permission( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1161,7 +1201,10 @@ async def get_permission( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1189,6 +1232,7 @@ async def set_properties( paid_bursting_max_iops: Optional[int] = None, share_provisioned_iops: Optional[int] = None, share_provisioned_bandwidth_mibps: Optional[int] = None, + enable_smb_directory_lease: Optional[bool] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, **kwargs: Any ) -> None: @@ -1230,6 +1274,11 @@ async def set_properties( in mebibytes per second (MiBps). If this is not specified, the provisioned bandwidth is set to value calculated based on recommendation formula. Default value is None. :type share_provisioned_bandwidth_mibps: int + :param enable_smb_directory_lease: SMB only, default is true. Specifies whether granting of + new directory leases for directories present in a share are to be enabled or disabled. An input + of true specifies that granting of new directory leases is to be allowed. An input of false + specifies that granting of new directory leases is to be blocked. Default value is None. + :type enable_smb_directory_lease: bool :param lease_access_conditions: Parameter group. Default value is None. :type lease_access_conditions: ~azure.storage.fileshare.models.LeaseAccessConditions :return: None or the result of cls(response) @@ -1268,6 +1317,7 @@ async def set_properties( paid_bursting_max_iops=paid_bursting_max_iops, share_provisioned_iops=share_provisioned_iops, share_provisioned_bandwidth_mibps=share_provisioned_bandwidth_mibps, + enable_smb_directory_lease=enable_smb_directory_lease, file_request_intent=self._config.file_request_intent, restype=restype, comp=comp, @@ -1286,7 +1336,10 @@ async def set_properties( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1387,7 +1440,10 @@ async def set_metadata( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1461,7 +1517,10 @@ async def get_access_policy( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1553,7 +1612,10 @@ async def set_access_policy( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1627,7 +1689,10 @@ async def get_statistics( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1713,7 +1778,10 @@ async def restore( if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/models/_azure_file_storage_enums.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/models/_azure_file_storage_enums.py index 550ebe4ff758..34c21387336a 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/models/_azure_file_storage_enums.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/models/_azure_file_storage_enums.py @@ -228,3 +228,10 @@ class StorageErrorCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): AUTHORIZATION_RESOURCE_TYPE_MISMATCH = "AuthorizationResourceTypeMismatch" FEATURE_VERSION_MISMATCH = "FeatureVersionMismatch" SHARE_SNAPSHOT_NOT_FOUND = "ShareSnapshotNotFound" + FILE_SHARE_PROVISIONED_IOPS_INVALID = "FileShareProvisionedIopsInvalid" + FILE_SHARE_PROVISIONED_BANDWIDTH_INVALID = "FileShareProvisionedBandwidthInvalid" + FILE_SHARE_PROVISIONED_STORAGE_INVALID = "FileShareProvisionedStorageInvalid" + TOTAL_SHARES_PROVISIONED_CAPACITY_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedCapacityExceedsAccountLimit" + TOTAL_SHARES_PROVISIONED_IOPS_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedIopsExceedsAccountLimit" + TOTAL_SHARES_PROVISIONED_BANDWIDTH_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedBandwidthExceedsAccountLimit" + TOTAL_SHARES_COUNT_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesCountExceedsAccountLimit" diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/models/_models_py3.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/models/_models_py3.py index 467ea2519a3c..f7daeec6e89d 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/models/_models_py3.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/models/_models_py3.py @@ -1339,6 +1339,8 @@ class SharePropertiesInternal(_serialization.Model): :vartype next_allowed_provisioned_iops_downgrade_time: ~datetime.datetime :ivar next_allowed_provisioned_bandwidth_downgrade_time: :vartype next_allowed_provisioned_bandwidth_downgrade_time: ~datetime.datetime + :ivar enable_smb_directory_lease: + :vartype enable_smb_directory_lease: bool """ _validation = { @@ -1380,6 +1382,7 @@ class SharePropertiesInternal(_serialization.Model): "key": "NextAllowedProvisionedBandwidthDowngradeTime", "type": "rfc-1123", }, + "enable_smb_directory_lease": {"key": "EnableSmbDirectoryLease", "type": "bool"}, } def __init__( # pylint: disable=too-many-locals @@ -1411,6 +1414,7 @@ def __init__( # pylint: disable=too-many-locals max_burst_credits_for_iops: Optional[int] = None, next_allowed_provisioned_iops_downgrade_time: Optional[datetime.datetime] = None, next_allowed_provisioned_bandwidth_downgrade_time: Optional[datetime.datetime] = None, + enable_smb_directory_lease: Optional[bool] = None, **kwargs: Any ) -> None: """ @@ -1469,6 +1473,8 @@ def __init__( # pylint: disable=too-many-locals :paramtype next_allowed_provisioned_iops_downgrade_time: ~datetime.datetime :keyword next_allowed_provisioned_bandwidth_downgrade_time: :paramtype next_allowed_provisioned_bandwidth_downgrade_time: ~datetime.datetime + :keyword enable_smb_directory_lease: + :paramtype enable_smb_directory_lease: bool """ super().__init__(**kwargs) self.last_modified = last_modified @@ -1497,6 +1503,7 @@ def __init__( # pylint: disable=too-many-locals self.max_burst_credits_for_iops = max_burst_credits_for_iops self.next_allowed_provisioned_iops_downgrade_time = next_allowed_provisioned_iops_downgrade_time self.next_allowed_provisioned_bandwidth_downgrade_time = next_allowed_provisioned_bandwidth_downgrade_time + self.enable_smb_directory_lease = enable_smb_directory_lease class ShareProtocolSettings(_serialization.Model): diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_directory_operations.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_directory_operations.py index 16697a79fea4..1faa52afcd28 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_directory_operations.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_directory_operations.py @@ -58,7 +58,7 @@ def build_create_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) restype: Literal["directory"] = kwargs.pop("restype", _params.pop("restype", "directory")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -126,7 +126,7 @@ def build_get_properties_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) restype: Literal["directory"] = kwargs.pop("restype", _params.pop("restype", "directory")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -167,7 +167,7 @@ def build_delete_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) restype: Literal["directory"] = kwargs.pop("restype", _params.pop("restype", "directory")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -217,7 +217,7 @@ def build_set_properties_request( restype: Literal["directory"] = kwargs.pop("restype", _params.pop("restype", "directory")) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -281,7 +281,7 @@ def build_set_metadata_request( restype: Literal["directory"] = kwargs.pop("restype", _params.pop("restype", "directory")) comp: Literal["metadata"] = kwargs.pop("comp", _params.pop("comp", "metadata")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -330,7 +330,7 @@ def build_list_files_and_directories_segment_request( # pylint: disable=name-to restype: Literal["directory"] = kwargs.pop("restype", _params.pop("restype", "directory")) comp: Literal["list"] = kwargs.pop("comp", _params.pop("comp", "list")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -386,7 +386,7 @@ def build_list_handles_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["listhandles"] = kwargs.pop("comp", _params.pop("comp", "listhandles")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -437,7 +437,7 @@ def build_force_close_handles_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["forceclosehandles"] = kwargs.pop("comp", _params.pop("comp", "forceclosehandles")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -498,7 +498,7 @@ def build_rename_request( restype: Literal["directory"] = kwargs.pop("restype", _params.pop("restype", "directory")) comp: Literal["rename"] = kwargs.pop("comp", _params.pop("comp", "rename")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -700,7 +700,10 @@ def create( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -793,7 +796,10 @@ def get_properties( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -882,7 +888,10 @@ def delete( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1005,7 +1014,10 @@ def set_properties( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1097,7 +1109,10 @@ def set_metadata( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1199,7 +1214,10 @@ def list_files_and_directories_segment( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1290,7 +1308,10 @@ def list_handles( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1380,7 +1401,10 @@ def force_close_handles( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1535,7 +1559,10 @@ def rename( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_file_operations.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_file_operations.py index 72a0a3d61c0f..ddc3639bc4d2 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_file_operations.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_file_operations.py @@ -73,7 +73,7 @@ def build_create_request( file_type_constant: Literal["file"] = kwargs.pop("file_type_constant", _headers.pop("x-ms-type", "file")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -168,7 +168,7 @@ def build_download_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -217,7 +217,7 @@ def build_get_properties_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -259,7 +259,7 @@ def build_delete_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -317,7 +317,7 @@ def build_set_http_headers_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -398,7 +398,7 @@ def build_set_metadata_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["metadata"] = kwargs.pop("comp", _params.pop("comp", "metadata")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -445,7 +445,7 @@ def build_acquire_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["acquire"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "acquire")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -494,7 +494,7 @@ def build_release_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["release"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "release")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -541,7 +541,7 @@ def build_change_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["change"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "change")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -589,7 +589,7 @@ def build_break_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["break"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "break")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -643,7 +643,7 @@ def build_upload_range_request( comp: Literal["range"] = kwargs.pop("comp", _params.pop("comp", "range")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -715,7 +715,7 @@ def build_upload_range_from_url_request( file_range_write_from_url: Literal["update"] = kwargs.pop( "file_range_write_from_url", _headers.pop("x-ms-write", "update") ) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -791,7 +791,7 @@ def build_get_range_list_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["rangelist"] = kwargs.pop("comp", _params.pop("comp", "rangelist")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -858,7 +858,7 @@ def build_start_copy_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -946,7 +946,7 @@ def build_abort_copy_request( copy_action_abort_constant: Literal["abort"] = kwargs.pop( "copy_action_abort_constant", _headers.pop("x-ms-copy-action", "abort") ) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -992,7 +992,7 @@ def build_list_handles_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["listhandles"] = kwargs.pop("comp", _params.pop("comp", "listhandles")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1040,7 +1040,7 @@ def build_force_close_handles_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["forceclosehandles"] = kwargs.pop("comp", _params.pop("comp", "forceclosehandles")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1099,7 +1099,7 @@ def build_rename_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["rename"] = kwargs.pop("comp", _params.pop("comp", "rename")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1180,7 +1180,7 @@ def build_create_symbolic_link_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) restype: Literal["symboliclink"] = kwargs.pop("restype", _params.pop("restype", "symboliclink")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1233,7 +1233,7 @@ def build_get_symbolic_link_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) restype: Literal["symboliclink"] = kwargs.pop("restype", _params.pop("restype", "symboliclink")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1277,7 +1277,7 @@ def build_create_hard_link_request( restype: Literal["hardlink"] = kwargs.pop("restype", _params.pop("restype", "hardlink")) file_type_constant: Literal["file"] = kwargs.pop("file_type_constant", _headers.pop("x-ms-type", "file")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -1511,7 +1511,10 @@ def create( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1628,7 +1631,10 @@ def download( except (StreamConsumedError, StreamClosedError): pass map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1763,7 +1769,10 @@ def get_properties( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1881,7 +1890,10 @@ def delete( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2039,7 +2051,10 @@ def set_http_headers( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2141,7 +2156,10 @@ def set_metadata( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2229,7 +2247,10 @@ def acquire_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2307,7 +2328,10 @@ def release_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2394,7 +2418,10 @@ def change_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2480,7 +2507,10 @@ def break_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2613,7 +2643,10 @@ def upload_range( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2748,7 +2781,10 @@ def upload_range_from_url( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2854,7 +2890,10 @@ def get_range_list( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3024,7 +3063,10 @@ def start_copy( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3109,7 +3151,10 @@ def abort_copy( # pylint: disable=inconsistent-return-statements if response.status_code not in [204]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3190,7 +3235,10 @@ def list_handles( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3275,7 +3323,10 @@ def force_close_handles( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3435,7 +3486,10 @@ def rename( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3564,7 +3618,10 @@ def create_symbolic_link( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3657,7 +3714,10 @@ def get_symbolic_link( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -3747,7 +3807,10 @@ def create_hard_link( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_service_operations.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_service_operations.py index 1d7e76b19403..917d34ed6a7a 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_service_operations.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_service_operations.py @@ -48,7 +48,7 @@ def build_set_properties_request( restype: Literal["service"] = kwargs.pop("restype", _params.pop("restype", "service")) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -88,7 +88,7 @@ def build_get_properties_request( restype: Literal["service"] = kwargs.pop("restype", _params.pop("restype", "service")) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -129,7 +129,7 @@ def build_list_shares_segment_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) comp: Literal["list"] = kwargs.pop("comp", _params.pop("comp", "list")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -171,7 +171,7 @@ def build_get_user_delegation_key_request( restype: Literal["service"] = kwargs.pop("restype", _params.pop("restype", "service")) comp: Literal["userdelegationkey"] = kwargs.pop("comp", _params.pop("comp", "userdelegationkey")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -277,7 +277,10 @@ def set_properties( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -337,7 +340,10 @@ def get_properties(self, timeout: Optional[int] = None, **kwargs: Any) -> _model if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -426,7 +432,10 @@ def list_shares_segment( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -507,7 +516,10 @@ def get_user_delegation_key( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_share_operations.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_share_operations.py index 33f9b5e9a381..c0e359869884 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_share_operations.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_generated/operations/_share_operations.py @@ -50,6 +50,7 @@ def build_create_request( paid_bursting_max_iops: Optional[int] = None, share_provisioned_iops: Optional[int] = None, share_provisioned_bandwidth_mibps: Optional[int] = None, + enable_smb_directory_lease: Optional[bool] = None, file_request_intent: Optional[Union[str, _models.ShareTokenIntent]] = None, **kwargs: Any ) -> HttpRequest: @@ -57,7 +58,7 @@ def build_create_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -111,6 +112,10 @@ def build_create_request( _headers["x-ms-share-provisioned-bandwidth-mibps"] = _SERIALIZER.header( "share_provisioned_bandwidth_mibps", share_provisioned_bandwidth_mibps, "int" ) + if enable_smb_directory_lease is not None: + _headers["x-ms-enable-smb-directory-lease"] = _SERIALIZER.header( + "enable_smb_directory_lease", enable_smb_directory_lease, "bool" + ) _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) @@ -129,7 +134,7 @@ def build_get_properties_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -172,7 +177,7 @@ def build_delete_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -220,7 +225,7 @@ def build_acquire_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["acquire"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "acquire")) restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -271,7 +276,7 @@ def build_release_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["release"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "release")) restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -320,7 +325,7 @@ def build_change_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["change"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "change")) restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -370,7 +375,7 @@ def build_renew_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["renew"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "renew")) restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -419,7 +424,7 @@ def build_break_lease_request( comp: Literal["lease"] = kwargs.pop("comp", _params.pop("comp", "lease")) action: Literal["break"] = kwargs.pop("action", _headers.pop("x-ms-lease-action", "break")) restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -467,7 +472,7 @@ def build_create_snapshot_request( restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) comp: Literal["snapshot"] = kwargs.pop("comp", _params.pop("comp", "snapshot")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -508,7 +513,7 @@ def build_create_permission_request( restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) comp: Literal["filepermission"] = kwargs.pop("comp", _params.pop("comp", "filepermission")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -550,7 +555,7 @@ def build_get_permission_request( restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) comp: Literal["filepermission"] = kwargs.pop("comp", _params.pop("comp", "filepermission")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -595,6 +600,7 @@ def build_set_properties_request( paid_bursting_max_iops: Optional[int] = None, share_provisioned_iops: Optional[int] = None, share_provisioned_bandwidth_mibps: Optional[int] = None, + enable_smb_directory_lease: Optional[bool] = None, file_request_intent: Optional[Union[str, _models.ShareTokenIntent]] = None, **kwargs: Any ) -> HttpRequest: @@ -603,7 +609,7 @@ def build_set_properties_request( restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) comp: Literal["properties"] = kwargs.pop("comp", _params.pop("comp", "properties")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -656,6 +662,10 @@ def build_set_properties_request( _headers["x-ms-share-provisioned-bandwidth-mibps"] = _SERIALIZER.header( "share_provisioned_bandwidth_mibps", share_provisioned_bandwidth_mibps, "int" ) + if enable_smb_directory_lease is not None: + _headers["x-ms-enable-smb-directory-lease"] = _SERIALIZER.header( + "enable_smb_directory_lease", enable_smb_directory_lease, "bool" + ) _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) @@ -675,7 +685,7 @@ def build_set_metadata_request( restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) comp: Literal["metadata"] = kwargs.pop("comp", _params.pop("comp", "metadata")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -718,7 +728,7 @@ def build_get_access_policy_request( restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) comp: Literal["acl"] = kwargs.pop("comp", _params.pop("comp", "acl")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -761,7 +771,7 @@ def build_set_access_policy_request( restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) comp: Literal["acl"] = kwargs.pop("comp", _params.pop("comp", "acl")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -804,7 +814,7 @@ def build_get_statistics_request( restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) comp: Literal["stats"] = kwargs.pop("comp", _params.pop("comp", "stats")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -847,7 +857,7 @@ def build_restore_request( restype: Literal["share"] = kwargs.pop("restype", _params.pop("restype", "share")) comp: Literal["undelete"] = kwargs.pop("comp", _params.pop("comp", "undelete")) - version: Literal["2026-02-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-02-06")) + version: Literal["2026-04-06"] = kwargs.pop("version", _headers.pop("x-ms-version", "2026-04-06")) accept = _headers.pop("Accept", "application/xml") # Construct URL @@ -915,6 +925,7 @@ def create( # pylint: disable=inconsistent-return-statements paid_bursting_max_iops: Optional[int] = None, share_provisioned_iops: Optional[int] = None, share_provisioned_bandwidth_mibps: Optional[int] = None, + enable_smb_directory_lease: Optional[bool] = None, **kwargs: Any ) -> None: """Creates a new share under the specified account. If the share with the same name already @@ -961,6 +972,11 @@ def create( # pylint: disable=inconsistent-return-statements in mebibytes per second (MiBps). If this is not specified, the provisioned bandwidth is set to value calculated based on recommendation formula. Default value is None. :type share_provisioned_bandwidth_mibps: int + :param enable_smb_directory_lease: SMB only, default is true. Specifies whether granting of + new directory leases for directories present in a share are to be enabled or disabled. An input + of true specifies that granting of new directory leases is to be allowed. An input of false + specifies that granting of new directory leases is to be blocked. Default value is None. + :type enable_smb_directory_lease: bool :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: @@ -993,6 +1009,7 @@ def create( # pylint: disable=inconsistent-return-statements paid_bursting_max_iops=paid_bursting_max_iops, share_provisioned_iops=share_provisioned_iops, share_provisioned_bandwidth_mibps=share_provisioned_bandwidth_mibps, + enable_smb_directory_lease=enable_smb_directory_lease, file_request_intent=self._config.file_request_intent, restype=restype, version=self._config.version, @@ -1010,7 +1027,10 @@ def create( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1101,7 +1121,10 @@ def get_properties( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1165,6 +1188,9 @@ def get_properties( # pylint: disable=inconsistent-return-statements response_headers["x-ms-share-next-allowed-provisioned-bandwidth-downgrade-time"] = self._deserialize( "rfc-1123", response.headers.get("x-ms-share-next-allowed-provisioned-bandwidth-downgrade-time") ) + response_headers["x-ms-enable-smb-directory-lease"] = self._deserialize( + "bool", response.headers.get("x-ms-enable-smb-directory-lease") + ) if cls: return cls(pipeline_response, None, response_headers) # type: ignore @@ -1239,7 +1265,10 @@ def delete( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1335,7 +1364,10 @@ def acquire_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1423,7 +1455,10 @@ def release_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1516,7 +1551,10 @@ def change_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1604,7 +1642,10 @@ def renew_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1706,7 +1747,10 @@ def break_lease( # pylint: disable=inconsistent-return-statements if response.status_code not in [202]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1779,7 +1823,10 @@ def create_snapshot( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1911,7 +1958,10 @@ def create_permission( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -1991,7 +2041,10 @@ def get_permission( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2019,6 +2072,7 @@ def set_properties( # pylint: disable=inconsistent-return-statements paid_bursting_max_iops: Optional[int] = None, share_provisioned_iops: Optional[int] = None, share_provisioned_bandwidth_mibps: Optional[int] = None, + enable_smb_directory_lease: Optional[bool] = None, lease_access_conditions: Optional[_models.LeaseAccessConditions] = None, **kwargs: Any ) -> None: @@ -2060,6 +2114,11 @@ def set_properties( # pylint: disable=inconsistent-return-statements in mebibytes per second (MiBps). If this is not specified, the provisioned bandwidth is set to value calculated based on recommendation formula. Default value is None. :type share_provisioned_bandwidth_mibps: int + :param enable_smb_directory_lease: SMB only, default is true. Specifies whether granting of + new directory leases for directories present in a share are to be enabled or disabled. An input + of true specifies that granting of new directory leases is to be allowed. An input of false + specifies that granting of new directory leases is to be blocked. Default value is None. + :type enable_smb_directory_lease: bool :param lease_access_conditions: Parameter group. Default value is None. :type lease_access_conditions: ~azure.storage.fileshare.models.LeaseAccessConditions :return: None or the result of cls(response) @@ -2098,6 +2157,7 @@ def set_properties( # pylint: disable=inconsistent-return-statements paid_bursting_max_iops=paid_bursting_max_iops, share_provisioned_iops=share_provisioned_iops, share_provisioned_bandwidth_mibps=share_provisioned_bandwidth_mibps, + enable_smb_directory_lease=enable_smb_directory_lease, file_request_intent=self._config.file_request_intent, restype=restype, comp=comp, @@ -2116,7 +2176,10 @@ def set_properties( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2217,7 +2280,10 @@ def set_metadata( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2291,7 +2357,10 @@ def get_access_policy( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2383,7 +2452,10 @@ def set_access_policy( # pylint: disable=inconsistent-return-statements if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2457,7 +2529,10 @@ def get_statistics( if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} @@ -2543,7 +2618,10 @@ def restore( # pylint: disable=inconsistent-return-statements if response.status_code not in [201]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.StorageError, pipeline_response) + error = self._deserialize.failsafe_deserialize( + _models.StorageError, + pipeline_response, + ) raise HttpResponseError(response=response, model=error) response_headers = {} From 7765056621591772834f80c5df58700b93f5fcea Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Tue, 11 Nov 2025 11:15:24 -0500 Subject: [PATCH 2/2] Shared Error Codes --- .../azure/storage/blob/_shared/models.py | 9 ++++++++- .../azure/storage/filedatalake/_shared/models.py | 9 ++++++++- .../azure/storage/fileshare/_shared/models.py | 9 ++++++++- .../azure/storage/queue/_shared/models.py | 9 ++++++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_shared/models.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_shared/models.py index 55284fda5f78..e2317d48e3ba 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_shared/models.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_shared/models.py @@ -153,11 +153,15 @@ class StorageErrorCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): # File values CANNOT_DELETE_FILE_OR_DIRECTORY = "CannotDeleteFileOrDirectory" CLIENT_CACHE_FLUSH_DELAY = "ClientCacheFlushDelay" + CONTAINER_QUOTA_DOWNGRADE_NOT_ALLOWED = "ContainerQuotaDowngradeNotAllowed" DELETE_PENDING = "DeletePending" DIRECTORY_NOT_EMPTY = "DirectoryNotEmpty" FILE_LOCK_CONFLICT = "FileLockConflict" FILE_SHARE_PROVISIONED_BANDWIDTH_DOWNGRADE_NOT_ALLOWED = "FileShareProvisionedBandwidthDowngradeNotAllowed" + FILE_SHARE_PROVISIONED_BANDWIDTH_INVALID = "FileShareProvisionedBandwidthInvalid" FILE_SHARE_PROVISIONED_IOPS_DOWNGRADE_NOT_ALLOWED = "FileShareProvisionedIopsDowngradeNotAllowed" + FILE_SHARE_PROVISIONED_IOPS_INVALID = "FileShareProvisionedIopsInvalid" + FILE_SHARE_PROVISIONED_STORAGE_INVALID = "FileShareProvisionedStorageInvalid" INVALID_FILE_OR_DIRECTORY_PATH_NAME = "InvalidFileOrDirectoryPathName" PARENT_NOT_FOUND = "ParentNotFound" READ_ONLY_ATTRIBUTE = "ReadOnlyAttribute" @@ -171,7 +175,10 @@ class StorageErrorCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): SHARE_SNAPSHOT_NOT_FOUND = "ShareSnapshotNotFound" SHARE_SNAPSHOT_OPERATION_NOT_SUPPORTED = "ShareSnapshotOperationNotSupported" SHARE_HAS_SNAPSHOTS = "ShareHasSnapshots" - CONTAINER_QUOTA_DOWNGRADE_NOT_ALLOWED = "ContainerQuotaDowngradeNotAllowed" + TOTAL_SHARES_PROVISIONED_CAPACITY_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedCapacityExceedsAccountLimit" + TOTAL_SHARES_PROVISIONED_IOPS_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedIopsExceedsAccountLimit" + TOTAL_SHARES_PROVISIONED_BANDWIDTH_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedBandwidthExceedsAccountLimit" + TOTAL_SHARES_COUNT_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesCountExceedsAccountLimit" # DataLake values CONTENT_LENGTH_MUST_BE_ZERO = "ContentLengthMustBeZero" diff --git a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_shared/models.py b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_shared/models.py index 804260f09e83..2af675088aed 100644 --- a/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_shared/models.py +++ b/sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_shared/models.py @@ -153,11 +153,15 @@ class StorageErrorCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): # File values CANNOT_DELETE_FILE_OR_DIRECTORY = "CannotDeleteFileOrDirectory" CLIENT_CACHE_FLUSH_DELAY = "ClientCacheFlushDelay" + CONTAINER_QUOTA_DOWNGRADE_NOT_ALLOWED = "ContainerQuotaDowngradeNotAllowed" DELETE_PENDING = "DeletePending" DIRECTORY_NOT_EMPTY = "DirectoryNotEmpty" FILE_LOCK_CONFLICT = "FileLockConflict" FILE_SHARE_PROVISIONED_BANDWIDTH_DOWNGRADE_NOT_ALLOWED = "FileShareProvisionedBandwidthDowngradeNotAllowed" + FILE_SHARE_PROVISIONED_BANDWIDTH_INVALID = "FileShareProvisionedBandwidthInvalid" FILE_SHARE_PROVISIONED_IOPS_DOWNGRADE_NOT_ALLOWED = "FileShareProvisionedIopsDowngradeNotAllowed" + FILE_SHARE_PROVISIONED_IOPS_INVALID = "FileShareProvisionedIopsInvalid" + FILE_SHARE_PROVISIONED_STORAGE_INVALID = "FileShareProvisionedStorageInvalid" INVALID_FILE_OR_DIRECTORY_PATH_NAME = "InvalidFileOrDirectoryPathName" PARENT_NOT_FOUND = "ParentNotFound" READ_ONLY_ATTRIBUTE = "ReadOnlyAttribute" @@ -171,7 +175,10 @@ class StorageErrorCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): SHARE_SNAPSHOT_NOT_FOUND = "ShareSnapshotNotFound" SHARE_SNAPSHOT_OPERATION_NOT_SUPPORTED = "ShareSnapshotOperationNotSupported" SHARE_HAS_SNAPSHOTS = "ShareHasSnapshots" - CONTAINER_QUOTA_DOWNGRADE_NOT_ALLOWED = "ContainerQuotaDowngradeNotAllowed" + TOTAL_SHARES_PROVISIONED_CAPACITY_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedCapacityExceedsAccountLimit" + TOTAL_SHARES_PROVISIONED_IOPS_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedIopsExceedsAccountLimit" + TOTAL_SHARES_PROVISIONED_BANDWIDTH_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedBandwidthExceedsAccountLimit" + TOTAL_SHARES_COUNT_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesCountExceedsAccountLimit" # DataLake values CONTENT_LENGTH_MUST_BE_ZERO = "ContentLengthMustBeZero" diff --git a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_shared/models.py b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_shared/models.py index e8835e7ccb03..5bae4c2f47b3 100644 --- a/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_shared/models.py +++ b/sdk/storage/azure-storage-file-share/azure/storage/fileshare/_shared/models.py @@ -153,11 +153,15 @@ class StorageErrorCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): # File values CANNOT_DELETE_FILE_OR_DIRECTORY = "CannotDeleteFileOrDirectory" CLIENT_CACHE_FLUSH_DELAY = "ClientCacheFlushDelay" + CONTAINER_QUOTA_DOWNGRADE_NOT_ALLOWED = "ContainerQuotaDowngradeNotAllowed" DELETE_PENDING = "DeletePending" DIRECTORY_NOT_EMPTY = "DirectoryNotEmpty" FILE_LOCK_CONFLICT = "FileLockConflict" FILE_SHARE_PROVISIONED_BANDWIDTH_DOWNGRADE_NOT_ALLOWED = "FileShareProvisionedBandwidthDowngradeNotAllowed" + FILE_SHARE_PROVISIONED_BANDWIDTH_INVALID = "FileShareProvisionedBandwidthInvalid" FILE_SHARE_PROVISIONED_IOPS_DOWNGRADE_NOT_ALLOWED = "FileShareProvisionedIopsDowngradeNotAllowed" + FILE_SHARE_PROVISIONED_IOPS_INVALID = "FileShareProvisionedIopsInvalid" + FILE_SHARE_PROVISIONED_STORAGE_INVALID = "FileShareProvisionedStorageInvalid" INVALID_FILE_OR_DIRECTORY_PATH_NAME = "InvalidFileOrDirectoryPathName" PARENT_NOT_FOUND = "ParentNotFound" READ_ONLY_ATTRIBUTE = "ReadOnlyAttribute" @@ -171,7 +175,10 @@ class StorageErrorCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): SHARE_SNAPSHOT_NOT_FOUND = "ShareSnapshotNotFound" SHARE_SNAPSHOT_OPERATION_NOT_SUPPORTED = "ShareSnapshotOperationNotSupported" SHARE_HAS_SNAPSHOTS = "ShareHasSnapshots" - CONTAINER_QUOTA_DOWNGRADE_NOT_ALLOWED = "ContainerQuotaDowngradeNotAllowed" + TOTAL_SHARES_PROVISIONED_CAPACITY_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedCapacityExceedsAccountLimit" + TOTAL_SHARES_PROVISIONED_IOPS_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedIopsExceedsAccountLimit" + TOTAL_SHARES_PROVISIONED_BANDWIDTH_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedBandwidthExceedsAccountLimit" + TOTAL_SHARES_COUNT_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesCountExceedsAccountLimit" # DataLake values CONTENT_LENGTH_MUST_BE_ZERO = "ContentLengthMustBeZero" diff --git a/sdk/storage/azure-storage-queue/azure/storage/queue/_shared/models.py b/sdk/storage/azure-storage-queue/azure/storage/queue/_shared/models.py index a3c2fd2740cc..1cb599361fbc 100644 --- a/sdk/storage/azure-storage-queue/azure/storage/queue/_shared/models.py +++ b/sdk/storage/azure-storage-queue/azure/storage/queue/_shared/models.py @@ -153,11 +153,15 @@ class StorageErrorCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): # File values CANNOT_DELETE_FILE_OR_DIRECTORY = "CannotDeleteFileOrDirectory" CLIENT_CACHE_FLUSH_DELAY = "ClientCacheFlushDelay" + CONTAINER_QUOTA_DOWNGRADE_NOT_ALLOWED = "ContainerQuotaDowngradeNotAllowed" DELETE_PENDING = "DeletePending" DIRECTORY_NOT_EMPTY = "DirectoryNotEmpty" FILE_LOCK_CONFLICT = "FileLockConflict" FILE_SHARE_PROVISIONED_BANDWIDTH_DOWNGRADE_NOT_ALLOWED = "FileShareProvisionedBandwidthDowngradeNotAllowed" + FILE_SHARE_PROVISIONED_BANDWIDTH_INVALID = "FileShareProvisionedBandwidthInvalid" FILE_SHARE_PROVISIONED_IOPS_DOWNGRADE_NOT_ALLOWED = "FileShareProvisionedIopsDowngradeNotAllowed" + FILE_SHARE_PROVISIONED_IOPS_INVALID = "FileShareProvisionedIopsInvalid" + FILE_SHARE_PROVISIONED_STORAGE_INVALID = "FileShareProvisionedStorageInvalid" INVALID_FILE_OR_DIRECTORY_PATH_NAME = "InvalidFileOrDirectoryPathName" PARENT_NOT_FOUND = "ParentNotFound" READ_ONLY_ATTRIBUTE = "ReadOnlyAttribute" @@ -171,7 +175,10 @@ class StorageErrorCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): SHARE_SNAPSHOT_NOT_FOUND = "ShareSnapshotNotFound" SHARE_SNAPSHOT_OPERATION_NOT_SUPPORTED = "ShareSnapshotOperationNotSupported" SHARE_HAS_SNAPSHOTS = "ShareHasSnapshots" - CONTAINER_QUOTA_DOWNGRADE_NOT_ALLOWED = "ContainerQuotaDowngradeNotAllowed" + TOTAL_SHARES_PROVISIONED_CAPACITY_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedCapacityExceedsAccountLimit" + TOTAL_SHARES_PROVISIONED_IOPS_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedIopsExceedsAccountLimit" + TOTAL_SHARES_PROVISIONED_BANDWIDTH_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesProvisionedBandwidthExceedsAccountLimit" + TOTAL_SHARES_COUNT_EXCEEDS_ACCOUNT_LIMIT = "TotalSharesCountExceedsAccountLimit" # DataLake values CONTENT_LENGTH_MUST_BE_ZERO = "ContentLengthMustBeZero"