diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations_async/_append_blob_operations_async.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations_async/_append_blob_operations_async.py index 4ba4ada7a8c4..40b494bb86fb 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations_async/_append_blob_operations_async.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations_async/_append_blob_operations_async.py @@ -532,6 +532,7 @@ async def append_block_from_url(self, source_url, content_length, source_range=N 'x-ms-blob-append-offset': self._deserialize('str', response.headers.get('x-ms-blob-append-offset')), 'x-ms-blob-committed-block-count': self._deserialize('int', response.headers.get('x-ms-blob-committed-block-count')), 'x-ms-encryption-key-sha256': self._deserialize('str', response.headers.get('x-ms-encryption-key-sha256')), + 'x-ms-request-server-encrypted': self._deserialize('bool', response.headers.get('x-ms-request-server-encrypted')), 'x-ms-error-code': self._deserialize('str', response.headers.get('x-ms-error-code')), } return cls(response, None, response_headers) diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations_async/_page_blob_operations_async.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations_async/_page_blob_operations_async.py index 463b76770488..2563c7752ade 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations_async/_page_blob_operations_async.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/aio/operations_async/_page_blob_operations_async.py @@ -37,7 +37,7 @@ def __init__(self, client, config, serializer, deserializer) -> None: self._config = config self.x_ms_blob_type = "PageBlob" - async def create(self, content_length, blob_content_length, timeout=None, metadata=None, blob_sequence_number=0, request_id=None, blob_http_headers=None, lease_access_conditions=None, cpk_info=None, modified_access_conditions=None, *, cls=None, **kwargs): + async def create(self, content_length, blob_content_length, timeout=None, tier=None, metadata=None, blob_sequence_number=0, request_id=None, blob_http_headers=None, lease_access_conditions=None, cpk_info=None, modified_access_conditions=None, *, cls=None, **kwargs): """The Create operation creates a new page blob. :param content_length: The length of the request. @@ -51,6 +51,11 @@ async def create(self, content_length, blob_content_length, timeout=None, metada href="https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/setting-timeouts-for-blob-service-operations">Setting Timeouts for Blob Service Operations. :type timeout: int + :param tier: Optional. Indicates the tier to be set on the page blob. + Possible values include: 'P4', 'P6', 'P10', 'P15', 'P20', 'P30', + 'P40', 'P50', 'P60', 'P70', 'P80' + :type tier: str or + ~azure.storage.blob.models.PremiumPageBlobAccessTier :param metadata: Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the @@ -147,6 +152,8 @@ async def create(self, content_length, blob_content_length, timeout=None, metada # Construct headers header_parameters = {} header_parameters['Content-Length'] = self._serialize.header("content_length", content_length, 'long') + if tier is not None: + header_parameters['x-ms-access-tier'] = self._serialize.header("tier", tier, 'str') if metadata is not None: header_parameters['x-ms-meta'] = self._serialize.header("metadata", metadata, 'str') header_parameters['x-ms-blob-content-length'] = self._serialize.header("blob_content_length", blob_content_length, 'long') @@ -702,6 +709,7 @@ async def upload_pages_from_url(self, source_url, source_range, content_length, 'x-ms-version': self._deserialize('str', response.headers.get('x-ms-version')), 'Date': self._deserialize('rfc-1123', response.headers.get('Date')), 'x-ms-request-server-encrypted': self._deserialize('bool', response.headers.get('x-ms-request-server-encrypted')), + 'x-ms-encryption-key-sha256': self._deserialize('str', response.headers.get('x-ms-encryption-key-sha256')), 'x-ms-error-code': self._deserialize('str', response.headers.get('x-ms-error-code')), } return cls(response, None, response_headers) diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/__init__.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/__init__.py index 1d46db85be33..0fa6ad33bfa6 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/__init__.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/__init__.py @@ -109,6 +109,7 @@ ListBlobsIncludeItem, ListContainersIncludeType, PathRenameMode, + PremiumPageBlobAccessTier, PublicAccessType, RehydratePriority, SequenceNumberActionType, @@ -170,6 +171,7 @@ 'GeoReplicationStatusType', 'AccessTierRequired', 'AccessTierOptional', + 'PremiumPageBlobAccessTier', 'RehydratePriority', 'BlockListType', 'DeleteSnapshotsOptionType', diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_azure_blob_storage_enums.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_azure_blob_storage_enums.py index 36eb9daaf70f..966e2e9c3248 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_azure_blob_storage_enums.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_azure_blob_storage_enums.py @@ -185,6 +185,11 @@ class StorageErrorCode(str, Enum): blob_being_rehydrated = "BlobBeingRehydrated" blob_archived = "BlobArchived" blob_not_archived = "BlobNotArchived" + authorization_source_ip_mismatch = "AuthorizationSourceIPMismatch" + authorization_protocol_mismatch = "AuthorizationProtocolMismatch" + authorization_permission_mismatch = "AuthorizationPermissionMismatch" + authorization_service_mismatch = "AuthorizationServiceMismatch" + authorization_resource_type_mismatch = "AuthorizationResourceTypeMismatch" class GeoReplicationStatusType(str, Enum): @@ -230,6 +235,21 @@ class AccessTierOptional(str, Enum): archive = "Archive" +class PremiumPageBlobAccessTier(str, Enum): + + p4 = "P4" + p6 = "P6" + p10 = "P10" + p15 = "P15" + p20 = "P20" + p30 = "P30" + p40 = "P40" + p50 = "P50" + p60 = "P60" + p70 = "P70" + p80 = "P80" + + class RehydratePriority(str, Enum): high = "High" diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models.py index 47e686013216..64e3bc82830b 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models.py @@ -904,8 +904,6 @@ class ListBlobsFlatSegmentResponse(Model): :type marker: str :param max_results: :type max_results: int - :param delimiter: - :type delimiter: str :param segment: Required. :type segment: ~azure.storage.blob.models.BlobFlatListSegment :param next_marker: @@ -924,7 +922,6 @@ class ListBlobsFlatSegmentResponse(Model): 'prefix': {'key': 'Prefix', 'type': 'str', 'xml': {'name': 'Prefix'}}, 'marker': {'key': 'Marker', 'type': 'str', 'xml': {'name': 'Marker'}}, 'max_results': {'key': 'MaxResults', 'type': 'int', 'xml': {'name': 'MaxResults'}}, - 'delimiter': {'key': 'Delimiter', 'type': 'str', 'xml': {'name': 'Delimiter'}}, 'segment': {'key': 'Segment', 'type': 'BlobFlatListSegment', 'xml': {'name': 'Segment'}}, 'next_marker': {'key': 'NextMarker', 'type': 'str', 'xml': {'name': 'NextMarker'}}, } @@ -939,7 +936,6 @@ def __init__(self, **kwargs): self.prefix = kwargs.get('prefix', None) self.marker = kwargs.get('marker', None) self.max_results = kwargs.get('max_results', None) - self.delimiter = kwargs.get('delimiter', None) self.segment = kwargs.get('segment', None) self.next_marker = kwargs.get('next_marker', None) diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models_py3.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models_py3.py index ae5f71b0b5ff..718d44af5888 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models_py3.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/models/_models_py3.py @@ -904,8 +904,6 @@ class ListBlobsFlatSegmentResponse(Model): :type marker: str :param max_results: :type max_results: int - :param delimiter: - :type delimiter: str :param segment: Required. :type segment: ~azure.storage.blob.models.BlobFlatListSegment :param next_marker: @@ -924,7 +922,6 @@ class ListBlobsFlatSegmentResponse(Model): 'prefix': {'key': 'Prefix', 'type': 'str', 'xml': {'name': 'Prefix'}}, 'marker': {'key': 'Marker', 'type': 'str', 'xml': {'name': 'Marker'}}, 'max_results': {'key': 'MaxResults', 'type': 'int', 'xml': {'name': 'MaxResults'}}, - 'delimiter': {'key': 'Delimiter', 'type': 'str', 'xml': {'name': 'Delimiter'}}, 'segment': {'key': 'Segment', 'type': 'BlobFlatListSegment', 'xml': {'name': 'Segment'}}, 'next_marker': {'key': 'NextMarker', 'type': 'str', 'xml': {'name': 'NextMarker'}}, } @@ -932,14 +929,13 @@ class ListBlobsFlatSegmentResponse(Model): 'name': 'EnumerationResults' } - def __init__(self, *, service_endpoint: str, container_name: str, segment, prefix: str=None, marker: str=None, max_results: int=None, delimiter: str=None, next_marker: str=None, **kwargs) -> None: + def __init__(self, *, service_endpoint: str, container_name: str, segment, prefix: str=None, marker: str=None, max_results: int=None, next_marker: str=None, **kwargs) -> None: super(ListBlobsFlatSegmentResponse, self).__init__(**kwargs) self.service_endpoint = service_endpoint self.container_name = container_name self.prefix = prefix self.marker = marker self.max_results = max_results - self.delimiter = delimiter self.segment = segment self.next_marker = next_marker diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_append_blob_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_append_blob_operations.py index 018744d8ba22..c06ec3449833 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_append_blob_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_append_blob_operations.py @@ -532,6 +532,7 @@ def append_block_from_url(self, source_url, content_length, source_range=None, s 'x-ms-blob-append-offset': self._deserialize('str', response.headers.get('x-ms-blob-append-offset')), 'x-ms-blob-committed-block-count': self._deserialize('int', response.headers.get('x-ms-blob-committed-block-count')), 'x-ms-encryption-key-sha256': self._deserialize('str', response.headers.get('x-ms-encryption-key-sha256')), + 'x-ms-request-server-encrypted': self._deserialize('bool', response.headers.get('x-ms-request-server-encrypted')), 'x-ms-error-code': self._deserialize('str', response.headers.get('x-ms-error-code')), } return cls(response, None, response_headers) diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_page_blob_operations.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_page_blob_operations.py index 8f649ae29060..53724a07be89 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_page_blob_operations.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_generated/operations/_page_blob_operations.py @@ -37,7 +37,7 @@ def __init__(self, client, config, serializer, deserializer): self._config = config self.x_ms_blob_type = "PageBlob" - def create(self, content_length, blob_content_length, timeout=None, metadata=None, blob_sequence_number=0, request_id=None, blob_http_headers=None, lease_access_conditions=None, cpk_info=None, modified_access_conditions=None, cls=None, **kwargs): + def create(self, content_length, blob_content_length, timeout=None, tier=None, metadata=None, blob_sequence_number=0, request_id=None, blob_http_headers=None, lease_access_conditions=None, cpk_info=None, modified_access_conditions=None, cls=None, **kwargs): """The Create operation creates a new page blob. :param content_length: The length of the request. @@ -51,6 +51,11 @@ def create(self, content_length, blob_content_length, timeout=None, metadata=Non href="https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/setting-timeouts-for-blob-service-operations">Setting Timeouts for Blob Service Operations. :type timeout: int + :param tier: Optional. Indicates the tier to be set on the page blob. + Possible values include: 'P4', 'P6', 'P10', 'P15', 'P20', 'P30', + 'P40', 'P50', 'P60', 'P70', 'P80' + :type tier: str or + ~azure.storage.blob.models.PremiumPageBlobAccessTier :param metadata: Optional. Specifies a user-defined name-value pair associated with the blob. If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the @@ -147,6 +152,8 @@ def create(self, content_length, blob_content_length, timeout=None, metadata=Non # Construct headers header_parameters = {} header_parameters['Content-Length'] = self._serialize.header("content_length", content_length, 'long') + if tier is not None: + header_parameters['x-ms-access-tier'] = self._serialize.header("tier", tier, 'str') if metadata is not None: header_parameters['x-ms-meta'] = self._serialize.header("metadata", metadata, 'str') header_parameters['x-ms-blob-content-length'] = self._serialize.header("blob_content_length", blob_content_length, 'long') @@ -702,6 +709,7 @@ def upload_pages_from_url(self, source_url, source_range, content_length, range, 'x-ms-version': self._deserialize('str', response.headers.get('x-ms-version')), 'Date': self._deserialize('rfc-1123', response.headers.get('Date')), 'x-ms-request-server-encrypted': self._deserialize('bool', response.headers.get('x-ms-request-server-encrypted')), + 'x-ms-encryption-key-sha256': self._deserialize('str', response.headers.get('x-ms-encryption-key-sha256')), 'x-ms-error-code': self._deserialize('str', response.headers.get('x-ms-error-code')), } return cls(response, None, response_headers) diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/aio/models.py b/sdk/storage/azure-storage-blob/azure/storage/blob/aio/models.py index 58f30128edb0..0a7cf719cd91 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/aio/models.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/aio/models.py @@ -148,7 +148,6 @@ async def _extract_data_cb(self, get_next_return): self.results_per_page = self._response.max_results self.container = self._response.container_name self.current_page = [self._build_item(item) for item in self._response.segment.blob_items] - self.delimiter = self._response.delimiter return self._response.next_marker or None, self.current_page @@ -211,6 +210,7 @@ async def _extract_data_cb(self, get_next_return): continuation_token, _ = await super(BlobPrefixPaged, self)._extract_data_cb(get_next_return) self.current_page = self._response.segment.blob_prefixes + self._response.segment.blob_items self.current_page = [self._build_item(item) for item in self.current_page] + self.delimiter = self._response.delimiter return continuation_token, self.current_page diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/models.py b/sdk/storage/azure-storage-blob/azure/storage/blob/models.py index a80e75dfcaef..5ab80a1d4158 100644 --- a/sdk/storage/azure-storage-blob/azure/storage/blob/models.py +++ b/sdk/storage/azure-storage-blob/azure/storage/blob/models.py @@ -534,7 +534,6 @@ def _extract_data_cb(self, get_next_return): self.results_per_page = self._response.max_results self.container = self._response.container_name self.current_page = [self._build_item(item) for item in self._response.segment.blob_items] - self.delimiter = self._response.delimiter return self._response.next_marker or None, self.current_page @@ -599,6 +598,7 @@ def _extract_data_cb(self, get_next_return): continuation_token, _ = super(BlobPrefixPaged, self)._extract_data_cb(get_next_return) self.current_page = self._response.segment.blob_prefixes + self._response.segment.blob_items self.current_page = [self._build_item(item) for item in self.current_page] + self.delimiter = self._response.delimiter return continuation_token, self.current_page