diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.py
index fd3c4a68beda..ce4aadaf6a82 100644
--- a/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.py
+++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_client.py
@@ -2372,10 +2372,12 @@ def set_premium_page_blob_tier(self, premium_page_blob_tier, **kwargs):
def _set_blob_tags_options(self, tags=None, **kwargs):
# type: (Optional[Dict[str, str]], **Any) -> Dict[str, Any]
tags = serialize_blob_tags(tags)
+ access_conditions = get_access_conditions(kwargs.pop('lease', None))
mod_conditions = get_modify_conditions(kwargs)
options = {
'tags': tags,
+ 'lease_access_conditions': access_conditions,
'modified_access_conditions': mod_conditions,
'cls': return_response_headers}
options.update(kwargs)
@@ -2410,6 +2412,10 @@ def set_blob_tags(self, tags=None, **kwargs):
blob.
:keyword str if_tags_match_condition:
Specify a SQL where clause on blob tags to operate only on destination blob with a matching value.
+ :keyword lease:
+ Required if the blob has an active lease. Value can be a BlobLeaseClient object
+ or the lease ID as a string.
+ :paramtype lease: ~azure.storage.blob.BlobLeaseClient or str
:keyword int timeout:
The timeout parameter is expressed in seconds.
:returns: Blob-updated property dict (Etag and last modified)
@@ -2423,11 +2429,13 @@ def set_blob_tags(self, tags=None, **kwargs):
def _get_blob_tags_options(self, **kwargs):
# type: (**Any) -> Dict[str, str]
+ access_conditions = get_access_conditions(kwargs.pop('lease', None))
mod_conditions = get_modify_conditions(kwargs)
options = {
'version_id': kwargs.pop('version_id', None),
'snapshot': self.snapshot,
+ 'lease_access_conditions': access_conditions,
'modified_access_conditions': mod_conditions,
'timeout': kwargs.pop('timeout', None),
'cls': return_headers_and_deserialized}
@@ -2446,6 +2454,10 @@ def get_blob_tags(self, **kwargs):
value that, when present, specifies the version of the blob to add tags to.
:keyword str if_tags_match_condition:
Specify a SQL where clause on blob tags to operate only on destination blob with a matching value.
+ :keyword lease:
+ Required if the blob has an active lease. Value can be a BlobLeaseClient object
+ or the lease ID as a string.
+ :paramtype lease: ~azure.storage.blob.BlobLeaseClient or str
:keyword int timeout:
The timeout parameter is expressed in seconds.
:returns: Key value pairs of blob tags.
diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_service_client.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_service_client.py
index 1ab68c1f0fe5..b10d626fca5c 100644
--- a/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_service_client.py
+++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_blob_service_client.py
@@ -28,7 +28,8 @@
from ._generated.models import StorageErrorException, StorageServiceProperties, KeyInfo
from ._container_client import ContainerClient
from ._blob_client import BlobClient
-from ._models import ContainerPropertiesPaged, FilteredBlobPaged
+from ._models import ContainerPropertiesPaged
+from ._list_blobs_helper import FilteredBlobPaged
from ._serialize import get_api_version
from ._deserialize import service_stats_deserialize, service_properties_deserialize
@@ -47,6 +48,7 @@
CorsRule,
RetentionPolicy,
StaticWebsite,
+ FilteredBlob
)
diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/_list_blobs_helper.py b/sdk/storage/azure-storage-blob/azure/storage/blob/_list_blobs_helper.py
index 4d082fec96fc..a660b109ca38 100644
--- a/sdk/storage/azure-storage-blob/azure/storage/blob/_list_blobs_helper.py
+++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_list_blobs_helper.py
@@ -6,9 +6,9 @@
# --------------------------------------------------------------------------
from azure.core.paging import PageIterator, ItemPaged
-from azure.storage.blob._deserialize import get_blob_properties_from_generated_code
-from ._generated.models import StorageErrorException, BlobItemInternal, BlobPrefix as GenBlobPrefix
-from ._models import BlobProperties
+from ._deserialize import get_blob_properties_from_generated_code, parse_tags
+from ._generated.models import StorageErrorException, BlobItemInternal, BlobPrefix as GenBlobPrefix, FilterBlobItem
+from ._models import BlobProperties, FilteredBlob
from ._shared.models import DictMixin
from ._shared.response_handlers import return_context_and_deserialized, process_storage_error
@@ -164,3 +164,72 @@ def __init__(self, *args, **kwargs):
self.container = kwargs.get('container')
self.delimiter = kwargs.get('delimiter')
self.location_mode = kwargs.get('location_mode')
+
+
+class FilteredBlobPaged(PageIterator):
+ """An Iterable of Blob properties.
+
+ :ivar str service_endpoint: The service URL.
+ :ivar str prefix: A blob name prefix being used to filter the list.
+ :ivar str marker: The continuation token of the current page of results.
+ :ivar int results_per_page: The maximum number of results retrieved per API call.
+ :ivar str continuation_token: The continuation token to retrieve the next page of results.
+ :ivar str location_mode: The location mode being used to list results. The available
+ options include "primary" and "secondary".
+ :ivar current_page: The current page of listed results.
+ :vartype current_page: list(~azure.storage.blob.FilteredBlob)
+ :ivar str container: The container that the blobs are listed from.
+
+ :param callable command: Function to retrieve the next page of items.
+ :param str container: The name of the container.
+ :param int results_per_page: The maximum number of blobs to retrieve per
+ call.
+ :param str continuation_token: An opaque continuation token.
+ :param location_mode: Specifies the location the request should be sent to.
+ This mode only applies for RA-GRS accounts which allow secondary read access.
+ Options include 'primary' or 'secondary'.
+ """
+ def __init__(
+ self, command,
+ container=None,
+ results_per_page=None,
+ continuation_token=None,
+ location_mode=None):
+ super(FilteredBlobPaged, self).__init__(
+ get_next=self._get_next_cb,
+ extract_data=self._extract_data_cb,
+ continuation_token=continuation_token or ""
+ )
+ self._command = command
+ self.service_endpoint = None
+ self.marker = continuation_token
+ self.results_per_page = results_per_page
+ self.container = container
+ self.current_page = None
+ self.location_mode = location_mode
+
+ def _get_next_cb(self, continuation_token):
+ try:
+ return self._command(
+ marker=continuation_token or None,
+ maxresults=self.results_per_page,
+ cls=return_context_and_deserialized,
+ use_location=self.location_mode)
+ except StorageErrorException as error:
+ process_storage_error(error)
+
+ def _extract_data_cb(self, get_next_return):
+ self.location_mode, self._response = get_next_return
+ self.service_endpoint = self._response.service_endpoint
+ self.marker = self._response.next_marker
+ self.current_page = [self._build_item(item) for item in self._response.blobs]
+
+ return self._response.next_marker or None, self.current_page
+
+ @staticmethod
+ def _build_item(item):
+ if isinstance(item, FilterBlobItem):
+ tags = parse_tags(item.tags)
+ blob = FilteredBlob(name=item.name, container_name=item.container_name, tags=tags)
+ return blob
+ return item
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 c27fa9c02fc4..5fe44dcb2ece 100644
--- a/sdk/storage/azure-storage-blob/azure/storage/blob/_models.py
+++ b/sdk/storage/azure-storage-blob/azure/storage/blob/_models.py
@@ -9,7 +9,7 @@
from enum import Enum
from azure.core.paging import PageIterator
-from azure.storage.blob._generated.models import FilterBlobItem, ArrowField
+from ._generated.models import ArrowField
from ._shared import decode_base64_to_text
from ._shared.response_handlers import return_context_and_deserialized, process_storage_error
@@ -565,78 +565,13 @@ class FilteredBlob(DictMixin):
:type name: str
:ivar container_name: Container name.
:type container_name: str
+ :ivar tags: Key value pairs of blob tags.
+ :type tags: Dict[str, str]
"""
def __init__(self, **kwargs):
self.name = kwargs.get('name', None)
self.container_name = kwargs.get('container_name', None)
-
-
-class FilteredBlobPaged(PageIterator):
- """An Iterable of Blob properties.
-
- :ivar str service_endpoint: The service URL.
- :ivar str prefix: A blob name prefix being used to filter the list.
- :ivar str marker: The continuation token of the current page of results.
- :ivar int results_per_page: The maximum number of results retrieved per API call.
- :ivar str continuation_token: The continuation token to retrieve the next page of results.
- :ivar str location_mode: The location mode being used to list results. The available
- options include "primary" and "secondary".
- :ivar current_page: The current page of listed results.
- :vartype current_page: list(~azure.storage.blob.FilteredBlob)
- :ivar str container: The container that the blobs are listed from.
-
- :param callable command: Function to retrieve the next page of items.
- :param str container: The name of the container.
- :param int results_per_page: The maximum number of blobs to retrieve per
- call.
- :param str continuation_token: An opaque continuation token.
- :param location_mode: Specifies the location the request should be sent to.
- This mode only applies for RA-GRS accounts which allow secondary read access.
- Options include 'primary' or 'secondary'.
- """
- def __init__(
- self, command,
- container=None,
- results_per_page=None,
- continuation_token=None,
- location_mode=None):
- super(FilteredBlobPaged, self).__init__(
- get_next=self._get_next_cb,
- extract_data=self._extract_data_cb,
- continuation_token=continuation_token or ""
- )
- self._command = command
- self.service_endpoint = None
- self.marker = continuation_token
- self.results_per_page = results_per_page
- self.container = container
- self.current_page = None
- self.location_mode = location_mode
-
- def _get_next_cb(self, continuation_token):
- try:
- return self._command(
- marker=continuation_token or None,
- maxresults=self.results_per_page,
- cls=return_context_and_deserialized,
- use_location=self.location_mode)
- except StorageErrorException as error:
- process_storage_error(error)
-
- def _extract_data_cb(self, get_next_return):
- self.location_mode, self._response = get_next_return
- self.service_endpoint = self._response.service_endpoint
- self.marker = self._response.next_marker
- self.current_page = [self._build_item(item) for item in self._response.blobs]
-
- return self._response.next_marker or None, self.current_page
-
- @staticmethod
- def _build_item(item):
- if isinstance(item, FilterBlobItem):
- blob = FilteredBlob(name=item.name, container_name=item.container_name) # pylint: disable=protected-access
- return blob
- return item
+ self.tags = kwargs.get('tags', None)
class LeaseProperties(DictMixin):
diff --git a/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.py b/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.py
index 6b08edcd2fe7..3568ba02f279 100644
--- a/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.py
+++ b/sdk/storage/azure-storage-blob/azure/storage/blob/aio/_blob_client_async.py
@@ -1527,6 +1527,10 @@ async def set_blob_tags(self, tags=None, **kwargs):
:keyword str if_tags_match_condition:
Specify a SQL where clause on blob tags to operate only on blob with a matching value.
eg. "\"tagname\"='my tag'"
+ :keyword lease:
+ Required if the blob has an active lease. Value can be a BlobLeaseClient object
+ or the lease ID as a string.
+ :paramtype lease: ~azure.storage.blob.BlobLeaseClient or str
:keyword int timeout:
The timeout parameter is expressed in seconds.
:returns: Blob-updated property dict (Etag and last modified)
@@ -1552,6 +1556,10 @@ async def get_blob_tags(self, **kwargs):
:keyword str if_tags_match_condition:
Specify a SQL where clause on blob tags to operate only on blob with a matching value.
eg. "\"tagname\"='my tag'"
+ :keyword lease:
+ Required if the blob has an active lease. Value can be a BlobLeaseClient object
+ or the lease ID as a string.
+ :paramtype lease: ~azure.storage.blob.BlobLeaseClient or str
:keyword int timeout:
The timeout parameter is expressed in seconds.
:returns: Key value pairs of blob tags.
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 3e54d03cc3b8..9b8bd9f2af72 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
@@ -7,6 +7,7 @@
# pylint: disable=super-init-not-called, too-many-lines
from azure.core.async_paging import AsyncPageIterator
+from .._deserialize import parse_tags
from .._models import ContainerProperties, FilteredBlob
from .._shared.response_handlers import return_context_and_deserialized, process_storage_error
@@ -136,6 +137,7 @@ async def _extract_data_cb(self, get_next_return):
@staticmethod
def _build_item(item):
if isinstance(item, FilterBlobItem):
- blob = FilteredBlob(name=item.name, container_name=item.container_name) # pylint: disable=protected-access
+ tags = parse_tags(item.tags)
+ blob = FilteredBlob(name=item.name, container_name=item.container_name, tags=tags)
return blob
return item
diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags.test_filter_blobs.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags.test_filter_blobs.yaml
index 59ae949b576f..25ab5e6a1d9b 100644
--- a/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags.test_filter_blobs.yaml
+++ b/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags.test_filter_blobs.yaml
@@ -11,32 +11,33 @@ interactions:
Content-Length:
- '0'
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:03:45 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/containerd79a0d11?timeout=5&restype=container
+ uri: https://storagename.blob.core.windows.net/containerd79a0d11?timeout=5&restype=container
response:
body:
- string: ''
+ string: "\uFEFFContainerAlreadyExistsThe
+ specified container already exists.\nRequestId:820fefb8-101e-0017-8075-b473c9000000\nTime:2020-11-06T19:43:26.7136424Z"
headers:
content-length:
- - '0'
+ - '230'
+ content-type:
+ - application/xml
date:
- - Thu, 02 Jul 2020 22:03:45 GMT
- etag:
- - '"0x8D81ED3CB3980B2"'
- last-modified:
- - Thu, 02 Jul 2020 22:03:46 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
server:
- Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-error-code:
+ - ContainerAlreadyExists
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
status:
- code: 201
- message: Created
+ code: 409
+ message: The specified container already exists.
- request:
body: null
headers:
@@ -49,32 +50,33 @@ interactions:
Content-Length:
- '0'
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container1d79a0d11?restype=container
+ uri: https://storagename.blob.core.windows.net/container1d79a0d11?restype=container
response:
body:
- string: ''
+ string: "\uFEFFContainerAlreadyExistsThe
+ specified container already exists.\nRequestId:820feff2-101e-0017-3575-b473c9000000\nTime:2020-11-06T19:43:26.7946995Z"
headers:
content-length:
- - '0'
+ - '230'
+ content-type:
+ - application/xml
date:
- - Thu, 02 Jul 2020 22:03:46 GMT
- etag:
- - '"0x8D81ED3CB4717B8"'
- last-modified:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
server:
- Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-error-code:
+ - ContainerAlreadyExists
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
status:
- code: 201
- message: Created
+ code: 409
+ message: The specified container already exists.
- request:
body: null
headers:
@@ -87,32 +89,33 @@ interactions:
Content-Length:
- '0'
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container2d79a0d11?restype=container
+ uri: https://storagename.blob.core.windows.net/container2d79a0d11?restype=container
response:
body:
- string: ''
+ string: "\uFEFFContainerAlreadyExistsThe
+ specified container already exists.\nRequestId:820ff013-101e-0017-5075-b473c9000000\nTime:2020-11-06T19:43:26.8517405Z"
headers:
content-length:
- - '0'
+ - '230'
+ content-type:
+ - application/xml
date:
- - Thu, 02 Jul 2020 22:03:46 GMT
- etag:
- - '"0x8D81ED3CB5487AE"'
- last-modified:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
server:
- Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-error-code:
+ - ContainerAlreadyExists
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
status:
- code: 201
- message: Created
+ code: 409
+ message: The specified container already exists.
- request:
body: null
headers:
@@ -125,32 +128,33 @@ interactions:
Content-Length:
- '0'
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container3d79a0d11?restype=container
+ uri: https://storagename.blob.core.windows.net/container3d79a0d11?restype=container
response:
body:
- string: ''
+ string: "\uFEFFContainerAlreadyExistsThe
+ specified container already exists.\nRequestId:820ff01c-101e-0017-5675-b473c9000000\nTime:2020-11-06T19:43:26.9087810Z"
headers:
content-length:
- - '0'
+ - '230'
+ content-type:
+ - application/xml
date:
- - Thu, 02 Jul 2020 22:03:46 GMT
- etag:
- - '"0x8D81ED3CB68AF9D"'
- last-modified:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
server:
- Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-error-code:
+ - ContainerAlreadyExists
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
status:
- code: 201
- message: Created
+ code: 409
+ message: The specified container already exists.
- request:
body: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
headers:
@@ -165,17 +169,17 @@ interactions:
Content-Type:
- application/octet-stream
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-blob-type:
- BlockBlob
x-ms-date:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
x-ms-tags:
- tag1=firsttag&tag2=secondtag&tag3=thirdtag
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/containerd79a0d11/blob1
+ uri: https://storagename.blob.core.windows.net/containerd79a0d11/blob1
response:
body:
string: ''
@@ -185,11 +189,11 @@ interactions:
content-md5:
- yaNM/IXZgmmMasifdgcavQ==
date:
- - Thu, 02 Jul 2020 22:03:46 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
etag:
- - '"0x8D81ED3CB7B9C18"'
+ - '"0x8D8828C3B00FC83"'
last-modified:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
server:
- Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-content-crc64:
@@ -197,7 +201,9 @@ interactions:
x-ms-request-server-encrypted:
- 'true'
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
+ x-ms-version-id:
+ - '2020-11-06T19:43:26.9887891Z'
status:
code: 201
message: Created
@@ -215,17 +221,17 @@ interactions:
Content-Type:
- application/octet-stream
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-blob-type:
- BlockBlob
x-ms-date:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:27 GMT
x-ms-tags:
- tag1=firsttag&tag2=secondtag&tag3=thirdtag
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container1d79a0d11/blob2
+ uri: https://storagename.blob.core.windows.net/container1d79a0d11/blob2
response:
body:
string: ''
@@ -235,11 +241,11 @@ interactions:
content-md5:
- yaNM/IXZgmmMasifdgcavQ==
date:
- - Thu, 02 Jul 2020 22:03:46 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
etag:
- - '"0x8D81ED3CB8B2F58"'
+ - '"0x8D8828C3B0BACE8"'
last-modified:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:27 GMT
server:
- Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-content-crc64:
@@ -247,7 +253,9 @@ interactions:
x-ms-request-server-encrypted:
- 'true'
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
+ x-ms-version-id:
+ - '2020-11-06T19:43:27.0588408Z'
status:
code: 201
message: Created
@@ -265,17 +273,17 @@ interactions:
Content-Type:
- application/octet-stream
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-blob-type:
- BlockBlob
x-ms-date:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:27 GMT
x-ms-tags:
- tag1=firsttag&tag2=secondtag&tag3=thirdtag
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container2d79a0d11/blob3
+ uri: https://storagename.blob.core.windows.net/container2d79a0d11/blob3
response:
body:
string: ''
@@ -285,11 +293,11 @@ interactions:
content-md5:
- yaNM/IXZgmmMasifdgcavQ==
date:
- - Thu, 02 Jul 2020 22:03:46 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
etag:
- - '"0x8D81ED3CB991492"'
+ - '"0x8D8828C3B191CC5"'
last-modified:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:27 GMT
server:
- Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-content-crc64:
@@ -297,7 +305,9 @@ interactions:
x-ms-request-server-encrypted:
- 'true'
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
+ x-ms-version-id:
+ - '2020-11-06T19:43:27.1479018Z'
status:
code: 201
message: Created
@@ -315,17 +325,17 @@ interactions:
Content-Type:
- application/octet-stream
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-blob-type:
- BlockBlob
x-ms-date:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:27 GMT
x-ms-tags:
- tag1=firsttag&tag2=secondtag&tag3=thirdtag
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container3d79a0d11/blob4
+ uri: https://storagename.blob.core.windows.net/container3d79a0d11/blob4
response:
body:
string: ''
@@ -335,11 +345,11 @@ interactions:
content-md5:
- yaNM/IXZgmmMasifdgcavQ==
date:
- - Thu, 02 Jul 2020 22:03:46 GMT
+ - Fri, 06 Nov 2020 19:43:26 GMT
etag:
- - '"0x8D81ED3CBAB1941"'
+ - '"0x8D8828C3B270205"'
last-modified:
- - Thu, 02 Jul 2020 22:03:47 GMT
+ - Fri, 06 Nov 2020 19:43:27 GMT
server:
- Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-content-crc64:
@@ -347,7 +357,9 @@ interactions:
x-ms-request-server-encrypted:
- 'true'
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
+ x-ms-version-id:
+ - '2020-11-06T19:43:27.2389673Z'
status:
code: 201
message: Created
@@ -361,28 +373,31 @@ interactions:
Connection:
- keep-alive
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:06:12 GMT
+ - Fri, 06 Nov 2020 19:43:37 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: GET
- uri: https://pytagstoragestorname.blob.core.windows.net/?where=tag1%3D%27firsttag%27&maxresults=2&comp=blobs
+ uri: https://storagename.blob.core.windows.net/?where=tag1%3D%27firsttag%27%20and%20tag2%3D%27secondtag%27&maxresults=2&comp=blobs
response:
body:
string: "\uFEFF\ntag1='firsttag'2blob2container1d79a0d11firsttagblob3container2d79a0d11firsttag2!244!MDAwMDM1IWNvbnRhaW5lcjNkNzlhMGQxMQEwMUQ2NTBCQ0E4RjFBQjJDITAwMDAwNSFibG9iNCEwMDAwMTYhCAAAAAgAAABmaXJzdHRhZyEwMDAwMDEhMCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiEwMDAwMzYhMTdjN2Y5YzMtODZlMC00ODdjLTg1YjAtODRkMGViNmI1M2MzITAwMDAwNCF0YWcxIQ--"
+ ServiceEndpoint=\"https://storagename.blob.core.windows.net/\">tag1='firsttag'
+ and tag2='secondtag'2blob2container12fd60f8etag1firsttagtag2secondtagblob2container1d79a0d11tag1firsttagtag2secondtag2!244!MDAwMDM1IWNvbnRhaW5lcjIyZmQ2MGY4ZQEwMUQ2QjQ3MDYwN0ZBNDdBITAwMDAwNSFibG9iMyEwMDAwMTYhCAAAAAgAAABmaXJzdHRhZyEwMDAwMDEhMCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiEwMDAwMzYhMzI5OTE2MzEtZmU0OC00MmU5LThiMWItMDA5YjU0ZGVkM2JjITAwMDAwNCF0YWcxIQ--"
headers:
content-type:
- application/xml
date:
- - Thu, 02 Jul 2020 22:06:12 GMT
+ - Fri, 06 Nov 2020 19:43:37 GMT
server:
- Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
transfer-encoding:
- chunked
+ vary:
+ - Origin
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
status:
code: 200
message: OK
@@ -396,28 +411,31 @@ interactions:
Connection:
- keep-alive
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:06:48 GMT
+ - Fri, 06 Nov 2020 19:43:37 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: GET
- uri: https://pytagstoragestorname.blob.core.windows.net/?where=tag1%3D%27firsttag%27&marker=2%21244%21MDAwMDM1IWNvbnRhaW5lcjNkNzlhMGQxMQEwMUQ2NTBCQ0E4RjFBQjJDITAwMDAwNSFibG9iNCEwMDAwMTYhCAAAAAgAAABmaXJzdHRhZyEwMDAwMDEhMCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiEwMDAwMzYhMTdjN2Y5YzMtODZlMC00ODdjLTg1YjAtODRkMGViNmI1M2MzITAwMDAwNCF0YWcxIQ--&maxresults=2&comp=blobs
+ uri: https://storagename.blob.core.windows.net/?where=tag1%3D%27firsttag%27%20and%20tag2%3D%27secondtag%27&marker=2%21244%21MDAwMDM1IWNvbnRhaW5lcjIyZmQ2MGY4ZQEwMUQ2QjQ3MDYwN0ZBNDdBITAwMDAwNSFibG9iMyEwMDAwMTYhCAAAAAgAAABmaXJzdHRhZyEwMDAwMDEhMCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiEwMDAwMzYhMzI5OTE2MzEtZmU0OC00MmU5LThiMWItMDA5YjU0ZGVkM2JjITAwMDAwNCF0YWcxIQ--&maxresults=2&comp=blobs
response:
body:
string: "\uFEFF\n2!244!MDAwMDM1IWNvbnRhaW5lcjNkNzlhMGQxMQEwMUQ2NTBCQ0E4RjFBQjJDITAwMDAwNSFibG9iNCEwMDAwMTYhCAAAAAgAAABmaXJzdHRhZyEwMDAwMDEhMCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiEwMDAwMzYhMTdjN2Y5YzMtODZlMC00ODdjLTg1YjAtODRkMGViNmI1M2MzITAwMDAwNCF0YWcxIQ--tag1='firsttag'2blob4container3d79a0d11firsttagblob1containerd79a0d11firsttag"
+ ServiceEndpoint=\"https://storagename.blob.core.windows.net/\">2!244!MDAwMDM1IWNvbnRhaW5lcjIyZmQ2MGY4ZQEwMUQ2QjQ3MDYwN0ZBNDdBITAwMDAwNSFibG9iMyEwMDAwMTYhCAAAAAgAAABmaXJzdHRhZyEwMDAwMDEhMCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiEwMDAwMzYhMzI5OTE2MzEtZmU0OC00MmU5LThiMWItMDA5YjU0ZGVkM2JjITAwMDAwNCF0YWcxIQ--tag1='firsttag'
+ and tag2='secondtag'2blob3container22fd60f8etag1firsttagtag2secondtagblob3container2d79a0d11tag1firsttagtag2secondtag2!240!MDAwMDM0IWNvbnRhaW5lcjJmZDYwZjhlATAxRDZCNDcwNjA2NDc2NjIhMDAwMDA1IWJsb2IxITAwMDAxNiEIAAAACAAAAGZpcnN0dGFnITAwMDAwMSEwITAwMDAyOCE5OTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTlaITAwMDAzNiFlYTY0ZTA3Mi0wZGJiLTRkYTgtYmUzYi01ZjdiOTYxNDYyNTchMDAwMDA0IXRhZzEh"
headers:
content-type:
- application/xml
date:
- - Thu, 02 Jul 2020 22:06:48 GMT
+ - Fri, 06 Nov 2020 19:43:37 GMT
server:
- Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
transfer-encoding:
- chunked
+ vary:
+ - Origin
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
status:
code: 200
message: OK
diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags.test_set_blob_tags_with_lease.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags.test_set_blob_tags_with_lease.yaml
new file mode 100644
index 000000000000..0117c5523fa3
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags.test_set_blob_tags_with_lease.yaml
@@ -0,0 +1,372 @@
+interactions:
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '0'
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ x-ms-version:
+ - '2020-04-08'
+ method: PUT
+ uri: https://storagename.blob.core.windows.net/container942b11f6?timeout=5&restype=container
+ response:
+ body:
+ string: "\uFEFFContainerAlreadyExistsThe
+ specified container already exists.\nRequestId:6b2d2938-f01e-000f-1885-b4acae000000\nTime:2020-11-06T21:43:47.5808008Z"
+ headers:
+ content-length:
+ - '230'
+ content-type:
+ - application/xml
+ date:
+ - Fri, 06 Nov 2020 21:43:46 GMT
+ server:
+ - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-error-code:
+ - ContainerAlreadyExists
+ x-ms-version:
+ - '2020-04-08'
+ status:
+ code: 409
+ message: The specified container already exists.
+- request:
+ body: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '1024'
+ Content-Type:
+ - application/octet-stream
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-blob-type:
+ - BlockBlob
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ x-ms-version:
+ - '2020-04-08'
+ method: PUT
+ uri: https://storagename.blob.core.windows.net/container942b11f6/blob942b11f6
+ response:
+ body:
+ string: ''
+ headers:
+ content-length:
+ - '0'
+ content-md5:
+ - yaNM/IXZgmmMasifdgcavQ==
+ date:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ etag:
+ - '"0x8D8829D0ADB38C6"'
+ last-modified:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ server:
+ - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-content-crc64:
+ - ov8U1LLnyKc=
+ x-ms-request-server-encrypted:
+ - 'true'
+ x-ms-version:
+ - '2020-04-08'
+ x-ms-version-id:
+ - '2020-11-06T21:43:47.6540614Z'
+ status:
+ code: 201
+ message: Created
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '0'
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ x-ms-lease-action:
+ - acquire
+ x-ms-lease-duration:
+ - '-1'
+ x-ms-proposed-lease-id:
+ - 2e317d7c-4e67-4f47-b3e4-c65dc53e30d4
+ x-ms-version:
+ - '2020-04-08'
+ method: PUT
+ uri: https://storagename.blob.core.windows.net/container942b11f6/blob942b11f6?comp=lease
+ response:
+ body:
+ string: ''
+ headers:
+ content-length:
+ - '0'
+ date:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ etag:
+ - '"0x8D8829D0ADB38C6"'
+ last-modified:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ server:
+ - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-lease-id:
+ - 2e317d7c-4e67-4f47-b3e4-c65dc53e30d4
+ x-ms-version:
+ - '2020-04-08'
+ status:
+ code: 201
+ message: Created
+- request:
+ body: '
+
+ tag1firsttagtag2secondtagtag3thirdtag'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '217'
+ Content-Type:
+ - application/xml; charset=utf-8
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ x-ms-version:
+ - '2020-04-08'
+ method: PUT
+ uri: https://storagename.blob.core.windows.net/container942b11f6/blob942b11f6?comp=tags
+ response:
+ body:
+ string: "\uFEFF\nLeaseIdMissingThere
+ is currently a lease on the blob and no lease ID was specified in the request.\nRequestId:6b2d29d0-f01e-000f-2785-b4acae000000\nTime:2020-11-06T21:43:47.9960936Z"
+ headers:
+ content-length:
+ - '268'
+ content-type:
+ - application/xml
+ date:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ server:
+ - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-error-code:
+ - LeaseIdMissing
+ x-ms-version:
+ - '2020-04-08'
+ status:
+ code: 412
+ message: There is currently a lease on the blob and no lease ID was specified
+ in the request.
+- request:
+ body: '
+
+ tag1firsttagtag2secondtagtag3thirdtag'
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '217'
+ Content-Type:
+ - application/xml; charset=utf-8
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:43:48 GMT
+ x-ms-lease-id:
+ - 2e317d7c-4e67-4f47-b3e4-c65dc53e30d4
+ x-ms-version:
+ - '2020-04-08'
+ method: PUT
+ uri: https://storagename.blob.core.windows.net/container942b11f6/blob942b11f6?comp=tags
+ response:
+ body:
+ string: ''
+ headers:
+ date:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ server:
+ - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-version:
+ - '2020-04-08'
+ status:
+ code: 204
+ message: No Content
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/xml
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:43:48 GMT
+ x-ms-version:
+ - '2020-04-08'
+ method: GET
+ uri: https://storagename.blob.core.windows.net/container942b11f6/blob942b11f6?comp=tags
+ response:
+ body:
+ string: "\uFEFF\ntag1firsttagtag2secondtagtag3thirdtag"
+ headers:
+ content-length:
+ - '220'
+ content-type:
+ - application/xml
+ date:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ server:
+ - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ vary:
+ - Origin
+ x-ms-version:
+ - '2020-04-08'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/xml
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:43:48 GMT
+ x-ms-lease-id:
+ - '''d92e6954-3274-4715-811c-727ca7145303'''
+ x-ms-version:
+ - '2020-04-08'
+ method: GET
+ uri: https://storagename.blob.core.windows.net/container942b11f6/blob942b11f6?comp=tags
+ response:
+ body:
+ string: "\uFEFF\nInvalidHeaderValueThe
+ value for one of the HTTP headers is not in the correct format.\nRequestId:6b2d2b0d-f01e-000f-4a85-b4acae000000\nTime:2020-11-06T21:43:48.2933032Zx-ms-lease-id'd92e6954-3274-4715-811c-727ca7145303'"
+ headers:
+ content-length:
+ - '368'
+ content-type:
+ - application/xml
+ date:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ server:
+ - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ vary:
+ - Origin
+ x-ms-error-code:
+ - InvalidHeaderValue
+ x-ms-version:
+ - '2020-04-08'
+ status:
+ code: 400
+ message: The value for one of the HTTP headers is not in the correct format.
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/xml
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:43:48 GMT
+ x-ms-lease-id:
+ - 2e317d7c-4e67-4f47-b3e4-c65dc53e30d4
+ x-ms-version:
+ - '2020-04-08'
+ method: GET
+ uri: https://storagename.blob.core.windows.net/container942b11f6/blob942b11f6?comp=tags
+ response:
+ body:
+ string: "\uFEFF\ntag1firsttagtag2secondtagtag3thirdtag"
+ headers:
+ content-length:
+ - '220'
+ content-type:
+ - application/xml
+ date:
+ - Fri, 06 Nov 2020 21:43:47 GMT
+ server:
+ - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ vary:
+ - Origin
+ x-ms-version:
+ - '2020-04-08'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '0'
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:43:48 GMT
+ x-ms-lease-id:
+ - 2e317d7c-4e67-4f47-b3e4-c65dc53e30d4
+ x-ms-version:
+ - '2020-04-08'
+ method: DELETE
+ uri: https://storagename.blob.core.windows.net/container942b11f6/blob942b11f6
+ response:
+ body:
+ string: ''
+ headers:
+ content-length:
+ - '0'
+ date:
+ - Fri, 06 Nov 2020 21:43:48 GMT
+ server:
+ - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-delete-type-permanent:
+ - 'false'
+ x-ms-version:
+ - '2020-04-08'
+ status:
+ code: 202
+ message: Accepted
+version: 1
diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags_async.test_filter_blobs.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags_async.test_filter_blobs.yaml
index 33704cef9a73..6290de18b2a4 100644
--- a/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags_async.test_filter_blobs.yaml
+++ b/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags_async.test_filter_blobs.yaml
@@ -3,102 +3,106 @@ interactions:
body: null
headers:
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:12:35 GMT
+ - Fri, 06 Nov 2020 19:44:38 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container2fd60f8e?timeout=5&restype=container
+ uri: https://storagename.blob.core.windows.net/container2fd60f8e?timeout=5&restype=container
response:
body:
- string: ''
+ string: "\uFEFFContainerAlreadyExistsThe
+ specified container already exists.\nRequestId:1bf4f8c6-801e-0015-4b75-b4cd71000000\nTime:2020-11-06T19:44:38.6773417Z"
headers:
- content-length: '0'
- date: Thu, 02 Jul 2020 22:12:36 GMT
- etag: '"0x8D81ED5071497F3"'
- last-modified: Thu, 02 Jul 2020 22:12:36 GMT
+ content-length: '230'
+ content-type: application/xml
+ date: Fri, 06 Nov 2020 19:44:38 GMT
server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
- x-ms-version: '2019-12-12'
+ x-ms-error-code: ContainerAlreadyExists
+ x-ms-version: '2020-04-08'
status:
- code: 201
- message: Created
- url: https://pytagstoragerbckbwvtpu4v.blob.core.windows.net/container2fd60f8e?timeout=5&restype=container
+ code: 409
+ message: The specified container already exists.
+ url: https://seanmcccanary3.blob.core.windows.net/container2fd60f8e?timeout=5&restype=container
- request:
body: null
headers:
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:12:36 GMT
+ - Fri, 06 Nov 2020 19:44:38 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container12fd60f8e?restype=container
+ uri: https://storagename.blob.core.windows.net/container12fd60f8e?restype=container
response:
body:
- string: ''
+ string: "\uFEFFContainerAlreadyExistsThe
+ specified container already exists.\nRequestId:1bf4f8d5-801e-0015-5175-b4cd71000000\nTime:2020-11-06T19:44:38.7594004Z"
headers:
- content-length: '0'
- date: Thu, 02 Jul 2020 22:12:36 GMT
- etag: '"0x8D81ED507225687"'
- last-modified: Thu, 02 Jul 2020 22:12:36 GMT
+ content-length: '230'
+ content-type: application/xml
+ date: Fri, 06 Nov 2020 19:44:38 GMT
server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
- x-ms-version: '2019-12-12'
+ x-ms-error-code: ContainerAlreadyExists
+ x-ms-version: '2020-04-08'
status:
- code: 201
- message: Created
- url: https://pytagstoragerbckbwvtpu4v.blob.core.windows.net/container12fd60f8e?restype=container
+ code: 409
+ message: The specified container already exists.
+ url: https://seanmcccanary3.blob.core.windows.net/container12fd60f8e?restype=container
- request:
body: null
headers:
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:12:37 GMT
+ - Fri, 06 Nov 2020 19:44:38 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container22fd60f8e?restype=container
+ uri: https://storagename.blob.core.windows.net/container22fd60f8e?restype=container
response:
body:
- string: ''
+ string: "\uFEFFContainerAlreadyExistsThe
+ specified container already exists.\nRequestId:1bf4f8d9-801e-0015-5475-b4cd71000000\nTime:2020-11-06T19:44:38.8284490Z"
headers:
- content-length: '0'
- date: Thu, 02 Jul 2020 22:12:36 GMT
- etag: '"0x8D81ED5072F51A5"'
- last-modified: Thu, 02 Jul 2020 22:12:37 GMT
+ content-length: '230'
+ content-type: application/xml
+ date: Fri, 06 Nov 2020 19:44:38 GMT
server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
- x-ms-version: '2019-12-12'
+ x-ms-error-code: ContainerAlreadyExists
+ x-ms-version: '2020-04-08'
status:
- code: 201
- message: Created
- url: https://pytagstoragerbckbwvtpu4v.blob.core.windows.net/container22fd60f8e?restype=container
+ code: 409
+ message: The specified container already exists.
+ url: https://seanmcccanary3.blob.core.windows.net/container22fd60f8e?restype=container
- request:
body: null
headers:
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:12:37 GMT
+ - Fri, 06 Nov 2020 19:44:38 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container32fd60f8e?restype=container
+ uri: https://storagename.blob.core.windows.net/container32fd60f8e?restype=container
response:
body:
- string: ''
+ string: "\uFEFFContainerAlreadyExistsThe
+ specified container already exists.\nRequestId:1bf4f8e6-801e-0015-6075-b4cd71000000\nTime:2020-11-06T19:44:38.8844884Z"
headers:
- content-length: '0'
- date: Thu, 02 Jul 2020 22:12:36 GMT
- etag: '"0x8D81ED5073D1034"'
- last-modified: Thu, 02 Jul 2020 22:12:37 GMT
+ content-length: '230'
+ content-type: application/xml
+ date: Fri, 06 Nov 2020 19:44:38 GMT
server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
- x-ms-version: '2019-12-12'
+ x-ms-error-code: ContainerAlreadyExists
+ x-ms-version: '2020-04-08'
status:
- code: 201
- message: Created
- url: https://pytagstoragerbckbwvtpu4v.blob.core.windows.net/container32fd60f8e?restype=container
+ code: 409
+ message: The specified container already exists.
+ url: https://seanmcccanary3.blob.core.windows.net/container32fd60f8e?restype=container
- request:
body: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
headers:
@@ -107,34 +111,35 @@ interactions:
Content-Type:
- application/octet-stream
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-blob-type:
- BlockBlob
x-ms-date:
- - Thu, 02 Jul 2020 22:12:37 GMT
+ - Fri, 06 Nov 2020 19:44:38 GMT
x-ms-tags:
- tag1=firsttag&tag2=secondtag&tag3=thirdtag
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container2fd60f8e/blob1
+ uri: https://storagename.blob.core.windows.net/container2fd60f8e/blob1
response:
body:
string: ''
headers:
content-length: '0'
content-md5: yaNM/IXZgmmMasifdgcavQ==
- date: Thu, 02 Jul 2020 22:12:36 GMT
- etag: '"0x8D81ED5074BB319"'
- last-modified: Thu, 02 Jul 2020 22:12:37 GMT
+ date: Fri, 06 Nov 2020 19:44:38 GMT
+ etag: '"0x8D8828C65F4D6FC"'
+ last-modified: Fri, 06 Nov 2020 19:44:39 GMT
server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-content-crc64: ov8U1LLnyKc=
x-ms-request-server-encrypted: 'true'
- x-ms-version: '2019-12-12'
+ x-ms-version: '2020-04-08'
+ x-ms-version-id: '2020-11-06T19:44:39.0512140Z'
status:
code: 201
message: Created
- url: https://pytagstoragerbckbwvtpu4v.blob.core.windows.net/container2fd60f8e/blob1
+ url: https://seanmcccanary3.blob.core.windows.net/container2fd60f8e/blob1
- request:
body: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
headers:
@@ -143,34 +148,35 @@ interactions:
Content-Type:
- application/octet-stream
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-blob-type:
- BlockBlob
x-ms-date:
- - Thu, 02 Jul 2020 22:12:37 GMT
+ - Fri, 06 Nov 2020 19:44:39 GMT
x-ms-tags:
- tag1=firsttag&tag2=secondtag&tag3=thirdtag
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container12fd60f8e/blob2
+ uri: https://storagename.blob.core.windows.net/container12fd60f8e/blob2
response:
body:
string: ''
headers:
content-length: '0'
content-md5: yaNM/IXZgmmMasifdgcavQ==
- date: Thu, 02 Jul 2020 22:12:36 GMT
- etag: '"0x8D81ED5075AF89D"'
- last-modified: Thu, 02 Jul 2020 22:12:37 GMT
+ date: Fri, 06 Nov 2020 19:44:38 GMT
+ etag: '"0x8D8828C66018375"'
+ last-modified: Fri, 06 Nov 2020 19:44:39 GMT
server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-content-crc64: ov8U1LLnyKc=
x-ms-request-server-encrypted: 'true'
- x-ms-version: '2019-12-12'
+ x-ms-version: '2020-04-08'
+ x-ms-version-id: '2020-11-06T19:44:39.1342725Z'
status:
code: 201
message: Created
- url: https://pytagstoragerbckbwvtpu4v.blob.core.windows.net/container12fd60f8e/blob2
+ url: https://seanmcccanary3.blob.core.windows.net/container12fd60f8e/blob2
- request:
body: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
headers:
@@ -179,34 +185,35 @@ interactions:
Content-Type:
- application/octet-stream
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-blob-type:
- BlockBlob
x-ms-date:
- - Thu, 02 Jul 2020 22:12:37 GMT
+ - Fri, 06 Nov 2020 19:44:39 GMT
x-ms-tags:
- tag1=firsttag&tag2=secondtag&tag3=thirdtag
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container22fd60f8e/blob3
+ uri: https://storagename.blob.core.windows.net/container22fd60f8e/blob3
response:
body:
string: ''
headers:
content-length: '0'
content-md5: yaNM/IXZgmmMasifdgcavQ==
- date: Thu, 02 Jul 2020 22:12:36 GMT
- etag: '"0x8D81ED50769EFF0"'
- last-modified: Thu, 02 Jul 2020 22:12:37 GMT
+ date: Fri, 06 Nov 2020 19:44:38 GMT
+ etag: '"0x8D8828C660BBE8E"'
+ last-modified: Fri, 06 Nov 2020 19:44:39 GMT
server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-content-crc64: ov8U1LLnyKc=
x-ms-request-server-encrypted: 'true'
- x-ms-version: '2019-12-12'
+ x-ms-version: '2020-04-08'
+ x-ms-version-id: '2020-11-06T19:44:39.2013214Z'
status:
code: 201
message: Created
- url: https://pytagstoragerbckbwvtpu4v.blob.core.windows.net/container22fd60f8e/blob3
+ url: https://seanmcccanary3.blob.core.windows.net/container22fd60f8e/blob3
- request:
body: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
headers:
@@ -215,86 +222,91 @@ interactions:
Content-Type:
- application/octet-stream
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-blob-type:
- BlockBlob
x-ms-date:
- - Thu, 02 Jul 2020 22:12:37 GMT
+ - Fri, 06 Nov 2020 19:44:39 GMT
x-ms-tags:
- tag1=firsttag&tag2=secondtag&tag3=thirdtag
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: PUT
- uri: https://pytagstoragestorname.blob.core.windows.net/container32fd60f8e/blob4
+ uri: https://storagename.blob.core.windows.net/container32fd60f8e/blob4
response:
body:
string: ''
headers:
content-length: '0'
content-md5: yaNM/IXZgmmMasifdgcavQ==
- date: Thu, 02 Jul 2020 22:12:36 GMT
- etag: '"0x8D81ED5077B58C5"'
- last-modified: Thu, 02 Jul 2020 22:12:37 GMT
+ date: Fri, 06 Nov 2020 19:44:38 GMT
+ etag: '"0x8D8828C6619076A"'
+ last-modified: Fri, 06 Nov 2020 19:44:39 GMT
server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-content-crc64: ov8U1LLnyKc=
x-ms-request-server-encrypted: 'true'
- x-ms-version: '2019-12-12'
+ x-ms-version: '2020-04-08'
+ x-ms-version-id: '2020-11-06T19:44:39.2893843Z'
status:
code: 201
message: Created
- url: https://pytagstoragerbckbwvtpu4v.blob.core.windows.net/container32fd60f8e/blob4
+ url: https://seanmcccanary3.blob.core.windows.net/container32fd60f8e/blob4
- request:
body: null
headers:
Accept:
- application/xml
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:12:43 GMT
+ - Fri, 06 Nov 2020 19:50:02 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: GET
- uri: https://pytagstoragestorname.blob.core.windows.net/?where=tag1%3D'firsttag'&maxresults=2&comp=blobs
+ uri: https://storagename.blob.core.windows.net/?where=%22tag1%22%3D'firsttag'%20and%20%22tag2%22%3D'secondtag'&maxresults=2&comp=blobs
response:
body:
string: "\uFEFF\ntag1='firsttag'2blob2container12fd60f8efirsttagblob3container22fd60f8efirsttag2!240!MDAwMDM0IWNvbnRhaW5lcjJmZDYwZjhlATAxRDY1MEJERTQ5REMwRDYhMDAwMDA1IWJsb2IxITAwMDAxNiEIAAAACAAAAGZpcnN0dGFnITAwMDAwMSEwITAwMDAyOCE5OTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTlaITAwMDAzNiFhODVmY2U3MS0zOGU4LTQ0OTgtYWM3My0xZThhYjUzYWIwMmYhMDAwMDA0IXRhZzEh"
+ ServiceEndpoint=\"https://storagename.blob.core.windows.net/\">"tag1"='firsttag'
+ and "tag2"='secondtag'2blob2container12fd60f8etag1firsttagtag2secondtagblob2container1d79a0d11tag1firsttagtag2secondtag2!244!MDAwMDM1IWNvbnRhaW5lcjIyZmQ2MGY4ZQEwMUQ2QjQ3MDYwN0ZBNDdBITAwMDAwNSFibG9iMyEwMDAwMTYhCAAAAAgAAABmaXJzdHRhZyEwMDAwMDEhMCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiEwMDAwMzYhNGY3YjQ2NWYtODM0My00M2ZlLTg5YjItYzkzOTVhMTMwN2RmITAwMDAwNCF0YWcxIQ--"
headers:
content-type: application/xml
- date: Thu, 02 Jul 2020 22:12:42 GMT
+ date: Fri, 06 Nov 2020 19:50:03 GMT
server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
transfer-encoding: chunked
- x-ms-version: '2019-12-12'
+ vary: Origin
+ x-ms-version: '2020-04-08'
status:
code: 200
message: OK
- url: https://pytagstoragerbckbwvtpu4v.blob.core.windows.net/?where=tag1%3D'firsttag'&maxresults=2&comp=blobs
+ url: https://seanmcccanary3.blob.core.windows.net/?where=%22tag1%22%3D'firsttag'%20and%20%22tag2%22%3D'secondtag'&maxresults=2&comp=blobs
- request:
body: null
headers:
Accept:
- application/xml
User-Agent:
- - azsdk-python-storage-blob/12.3.3 Python/3.7.3 (Windows-10-10.0.18362-SP0)
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
x-ms-date:
- - Thu, 02 Jul 2020 22:13:02 GMT
+ - Fri, 06 Nov 2020 19:50:04 GMT
x-ms-version:
- - '2019-12-12'
+ - '2020-04-08'
method: GET
- uri: https://pytagstoragestorname.blob.core.windows.net/?where=tag1%3D'firsttag'&marker=2!240!MDAwMDM0IWNvbnRhaW5lcjJmZDYwZjhlATAxRDY1MEJERTQ5REMwRDYhMDAwMDA1IWJsb2IxITAwMDAxNiEIAAAACAAAAGZpcnN0dGFnITAwMDAwMSEwITAwMDAyOCE5OTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTlaITAwMDAzNiFhODVmY2U3MS0zOGU4LTQ0OTgtYWM3My0xZThhYjUzYWIwMmYhMDAwMDA0IXRhZzEh&maxresults=2&comp=blobs
+ uri: https://storagename.blob.core.windows.net/?where=%22tag1%22%3D'firsttag'%20and%20%22tag2%22%3D'secondtag'&marker=2!244!MDAwMDM1IWNvbnRhaW5lcjIyZmQ2MGY4ZQEwMUQ2QjQ3MDYwN0ZBNDdBITAwMDAwNSFibG9iMyEwMDAwMTYhCAAAAAgAAABmaXJzdHRhZyEwMDAwMDEhMCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiEwMDAwMzYhNGY3YjQ2NWYtODM0My00M2ZlLTg5YjItYzkzOTVhMTMwN2RmITAwMDAwNCF0YWcxIQ--&maxresults=2&comp=blobs
response:
body:
string: "\uFEFF\n2!240!MDAwMDM0IWNvbnRhaW5lcjJmZDYwZjhlATAxRDY1MEJERTQ5REMwRDYhMDAwMDA1IWJsb2IxITAwMDAxNiEIAAAACAAAAGZpcnN0dGFnITAwMDAwMSEwITAwMDAyOCE5OTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTlaITAwMDAzNiFhODVmY2U3MS0zOGU4LTQ0OTgtYWM3My0xZThhYjUzYWIwMmYhMDAwMDA0IXRhZzEhtag1='firsttag'2blob1container2fd60f8efirsttagblob4container32fd60f8efirsttag"
+ ServiceEndpoint=\"https://storagename.blob.core.windows.net/\">2!244!MDAwMDM1IWNvbnRhaW5lcjIyZmQ2MGY4ZQEwMUQ2QjQ3MDYwN0ZBNDdBITAwMDAwNSFibG9iMyEwMDAwMTYhCAAAAAgAAABmaXJzdHRhZyEwMDAwMDEhMCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiEwMDAwMzYhNGY3YjQ2NWYtODM0My00M2ZlLTg5YjItYzkzOTVhMTMwN2RmITAwMDAwNCF0YWcxIQ--"tag1"='firsttag'
+ and "tag2"='secondtag'2blob3container22fd60f8etag1firsttagtag2secondtagblob3container2d79a0d11tag1firsttagtag2secondtag2!240!MDAwMDM0IWNvbnRhaW5lcjJmZDYwZjhlATAxRDZCNDcwNjA2NDc2NjIhMDAwMDA1IWJsb2IxITAwMDAxNiEIAAAACAAAAGZpcnN0dGFnITAwMDAwMSEwITAwMDAyOCE5OTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTlaITAwMDAzNiEwZGJkMTMwZi0yNzU0LTRiYjUtOTg2OC01ZGZkYzM2OGY3ZTkhMDAwMDA0IXRhZzEh"
headers:
content-type: application/xml
- date: Thu, 02 Jul 2020 22:13:02 GMT
+ date: Fri, 06 Nov 2020 19:50:03 GMT
server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
transfer-encoding: chunked
- x-ms-version: '2019-12-12'
+ vary: Origin
+ x-ms-version: '2020-04-08'
status:
code: 200
message: OK
- url: https://pytagstoragerbckbwvtpu4v.blob.core.windows.net/?where=tag1%3D'firsttag'&marker=2!240!MDAwMDM0IWNvbnRhaW5lcjJmZDYwZjhlATAxRDY1MEJERTQ5REMwRDYhMDAwMDA1IWJsb2IxITAwMDAxNiEIAAAACAAAAGZpcnN0dGFnITAwMDAwMSEwITAwMDAyOCE5OTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTlaITAwMDAzNiFhODVmY2U3MS0zOGU4LTQ0OTgtYWM3My0xZThhYjUzYWIwMmYhMDAwMDA0IXRhZzEh&maxresults=2&comp=blobs
+ url: https://seanmcccanary3.blob.core.windows.net/?where=%22tag1%22%3D'firsttag'%20and%20%22tag2%22%3D'secondtag'&marker=2!244!MDAwMDM1IWNvbnRhaW5lcjIyZmQ2MGY4ZQEwMUQ2QjQ3MDYwN0ZBNDdBITAwMDAwNSFibG9iMyEwMDAwMTYhCAAAAAgAAABmaXJzdHRhZyEwMDAwMDEhMCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiEwMDAwMzYhNGY3YjQ2NWYtODM0My00M2ZlLTg5YjItYzkzOTVhMTMwN2RmITAwMDAwNCF0YWcxIQ--&maxresults=2&comp=blobs
version: 1
diff --git a/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags_async.test_set_blob_tags_with_lease.yaml b/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags_async.test_set_blob_tags_with_lease.yaml
new file mode 100644
index 000000000000..5ec08a3549a1
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/tests/recordings/test_blob_tags_async.test_set_blob_tags_with_lease.yaml
@@ -0,0 +1,270 @@
+interactions:
+- request:
+ body: null
+ headers:
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:47:53 GMT
+ x-ms-version:
+ - '2020-04-08'
+ method: PUT
+ uri: https://storagename.blob.core.windows.net/containera431473?timeout=5&restype=container
+ response:
+ body:
+ string: ''
+ headers:
+ content-length: '0'
+ date: Fri, 06 Nov 2020 21:47:52 GMT
+ etag: '"0x8D8829D9D9E464C"'
+ last-modified: Fri, 06 Nov 2020 21:47:53 GMT
+ server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-version: '2020-04-08'
+ status:
+ code: 201
+ message: Created
+ url: https://seanmcccanary3.blob.core.windows.net/containera431473?timeout=5&restype=container
+- request:
+ body: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ headers:
+ Content-Length:
+ - '1024'
+ Content-Type:
+ - application/octet-stream
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-blob-type:
+ - BlockBlob
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:47:53 GMT
+ x-ms-version:
+ - '2020-04-08'
+ method: PUT
+ uri: https://storagename.blob.core.windows.net/containera431473/bloba431473
+ response:
+ body:
+ string: ''
+ headers:
+ content-length: '0'
+ content-md5: yaNM/IXZgmmMasifdgcavQ==
+ date: Fri, 06 Nov 2020 21:47:53 GMT
+ etag: '"0x8D8829D9DA61294"'
+ last-modified: Fri, 06 Nov 2020 21:47:53 GMT
+ server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-content-crc64: ov8U1LLnyKc=
+ x-ms-request-server-encrypted: 'true'
+ x-ms-version: '2020-04-08'
+ x-ms-version-id: '2020-11-06T21:47:53.9308180Z'
+ status:
+ code: 201
+ message: Created
+ url: https://seanmcccanary3.blob.core.windows.net/containera431473/bloba431473
+- request:
+ body: null
+ headers:
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:47:53 GMT
+ x-ms-lease-action:
+ - acquire
+ x-ms-lease-duration:
+ - '-1'
+ x-ms-proposed-lease-id:
+ - c4582a27-fa57-40db-8cc8-379fde913433
+ x-ms-version:
+ - '2020-04-08'
+ method: PUT
+ uri: https://storagename.blob.core.windows.net/containera431473/bloba431473?comp=lease
+ response:
+ body:
+ string: ''
+ headers:
+ content-length: '0'
+ date: Fri, 06 Nov 2020 21:47:53 GMT
+ etag: '"0x8D8829D9DA61294"'
+ last-modified: Fri, 06 Nov 2020 21:47:53 GMT
+ server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-lease-id: c4582a27-fa57-40db-8cc8-379fde913433
+ x-ms-version: '2020-04-08'
+ status:
+ code: 201
+ message: Created
+ url: https://seanmcccanary3.blob.core.windows.net/containera431473/bloba431473?comp=lease
+- request:
+ body: '
+
+ tag1firsttagtag2secondtagtag3thirdtag'
+ headers:
+ Content-Length:
+ - '217'
+ Content-Type:
+ - application/xml; charset=utf-8
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:47:54 GMT
+ x-ms-version:
+ - '2020-04-08'
+ method: PUT
+ uri: https://storagename.blob.core.windows.net/containera431473/bloba431473?comp=tags
+ response:
+ body:
+ string: "\uFEFF\nLeaseIdMissingThere
+ is currently a lease on the blob and no lease ID was specified in the request.\nRequestId:dccdd42d-401e-0035-4086-b4b6d6000000\nTime:2020-11-06T21:47:54.1899339Z"
+ headers:
+ content-length: '268'
+ content-type: application/xml
+ date: Fri, 06 Nov 2020 21:47:53 GMT
+ server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-error-code: LeaseIdMissing
+ x-ms-version: '2020-04-08'
+ status:
+ code: 412
+ message: There is currently a lease on the blob and no lease ID was specified
+ in the request.
+ url: https://seanmcccanary3.blob.core.windows.net/containera431473/bloba431473?comp=tags
+- request:
+ body: '
+
+ tag1firsttagtag2secondtagtag3thirdtag'
+ headers:
+ Content-Length:
+ - '217'
+ Content-Type:
+ - application/xml; charset=utf-8
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:47:54 GMT
+ x-ms-lease-id:
+ - c4582a27-fa57-40db-8cc8-379fde913433
+ x-ms-version:
+ - '2020-04-08'
+ method: PUT
+ uri: https://storagename.blob.core.windows.net/containera431473/bloba431473?comp=tags
+ response:
+ body:
+ string: ''
+ headers:
+ date: Fri, 06 Nov 2020 21:47:53 GMT
+ server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-version: '2020-04-08'
+ status:
+ code: 204
+ message: No Content
+ url: https://seanmcccanary3.blob.core.windows.net/containera431473/bloba431473?comp=tags
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/xml
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:47:54 GMT
+ x-ms-version:
+ - '2020-04-08'
+ method: GET
+ uri: https://storagename.blob.core.windows.net/containera431473/bloba431473?comp=tags
+ response:
+ body:
+ string: "\uFEFF\ntag1firsttagtag2secondtagtag3thirdtag"
+ headers:
+ content-length: '220'
+ content-type: application/xml
+ date: Fri, 06 Nov 2020 21:47:53 GMT
+ server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ vary: Origin
+ x-ms-version: '2020-04-08'
+ status:
+ code: 200
+ message: OK
+ url: https://seanmcccanary3.blob.core.windows.net/containera431473/bloba431473?comp=tags
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/xml
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:47:54 GMT
+ x-ms-lease-id:
+ - '''d92e6954-3274-4715-811c-727ca7145303'''
+ x-ms-version:
+ - '2020-04-08'
+ method: GET
+ uri: https://storagename.blob.core.windows.net/containera431473/bloba431473?comp=tags
+ response:
+ body:
+ string: "\uFEFF\nInvalidHeaderValueThe
+ value for one of the HTTP headers is not in the correct format.\nRequestId:dccdd4c8-401e-0035-4986-b4b6d6000000\nTime:2020-11-06T21:47:54.3740649Zx-ms-lease-id'd92e6954-3274-4715-811c-727ca7145303'"
+ headers:
+ content-length: '368'
+ content-type: application/xml
+ date: Fri, 06 Nov 2020 21:47:53 GMT
+ server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ vary: Origin
+ x-ms-error-code: InvalidHeaderValue
+ x-ms-version: '2020-04-08'
+ status:
+ code: 400
+ message: The value for one of the HTTP headers is not in the correct format.
+ url: https://seanmcccanary3.blob.core.windows.net/containera431473/bloba431473?comp=tags
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/xml
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:47:54 GMT
+ x-ms-lease-id:
+ - c4582a27-fa57-40db-8cc8-379fde913433
+ x-ms-version:
+ - '2020-04-08'
+ method: GET
+ uri: https://storagename.blob.core.windows.net/containera431473/bloba431473?comp=tags
+ response:
+ body:
+ string: "\uFEFF\ntag1firsttagtag2secondtagtag3thirdtag"
+ headers:
+ content-length: '220'
+ content-type: application/xml
+ date: Fri, 06 Nov 2020 21:47:53 GMT
+ server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ vary: Origin
+ x-ms-version: '2020-04-08'
+ status:
+ code: 200
+ message: OK
+ url: https://seanmcccanary3.blob.core.windows.net/containera431473/bloba431473?comp=tags
+- request:
+ body: null
+ headers:
+ User-Agent:
+ - azsdk-python-storage-blob/12.6.0b2 Python/3.7.3 (Windows-10-10.0.19041-SP0)
+ x-ms-date:
+ - Fri, 06 Nov 2020 21:47:54 GMT
+ x-ms-lease-id:
+ - c4582a27-fa57-40db-8cc8-379fde913433
+ x-ms-version:
+ - '2020-04-08'
+ method: DELETE
+ uri: https://storagename.blob.core.windows.net/containera431473/bloba431473
+ response:
+ body:
+ string: ''
+ headers:
+ content-length: '0'
+ date: Fri, 06 Nov 2020 21:47:53 GMT
+ server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
+ x-ms-delete-type-permanent: 'false'
+ x-ms-version: '2020-04-08'
+ status:
+ code: 202
+ message: Accepted
+ url: https://seanmcccanary3.blob.core.windows.net/containera431473/bloba431473
+version: 1
diff --git a/sdk/storage/azure-storage-blob/tests/test_blob_tags.py b/sdk/storage/azure-storage-blob/tests/test_blob_tags.py
index 7f84b5c1511e..e166b9cf8103 100644
--- a/sdk/storage/azure-storage-blob/tests/test_blob_tags.py
+++ b/sdk/storage/azure-storage-blob/tests/test_blob_tags.py
@@ -19,7 +19,7 @@
from _shared.testcase import StorageTestCase, GlobalStorageAccountPreparer, GlobalResourceGroupPreparer
from azure.core.exceptions import (
- ResourceExistsError, ResourceModifiedError)
+ ResourceExistsError, ResourceModifiedError, HttpResponseError)
from azure.storage.blob import (
BlobServiceClient,
BlobBlock, generate_account_sas, ResourceTypes, AccountSasPermissions, generate_container_sas,
@@ -103,6 +103,29 @@ def test_set_blob_tags(self, resource_group, location, storage_account, storage_
# Assert
self.assertIsNotNone(resp)
+ @pytest.mark.playback_test_only
+ @GlobalStorageAccountPreparer()
+ def test_set_blob_tags_with_lease(self, resource_group, location, storage_account, storage_account_key):
+ self._setup(storage_account, storage_account_key)
+ blob_client, _ = self._create_block_blob()
+ lease = blob_client.acquire_lease()
+
+ # Act
+ blob_tags = {"tag1": "firsttag", "tag2": "secondtag", "tag3": "thirdtag"}
+ with self.assertRaises(HttpResponseError):
+ blob_client.set_blob_tags(blob_tags)
+ blob_client.set_blob_tags(blob_tags, lease=lease)
+
+ blob_client.get_blob_tags()
+ with self.assertRaises(HttpResponseError):
+ blob_client.get_blob_tags(lease="'d92e6954-3274-4715-811c-727ca7145303'")
+ resp = blob_client.get_blob_tags(lease=lease)
+
+ self.assertIsNotNone(resp)
+ self.assertEqual(len(resp), 3)
+
+ blob_client.delete_blob(lease=lease)
+
@pytest.mark.playback_test_only
@GlobalStorageAccountPreparer()
def test_set_blob_tags_for_a_version(self, resource_group, location, storage_account, storage_account_key):
@@ -276,8 +299,8 @@ def test_list_blobs_returns_tags(self, resource_group, location, storage_account
for key, value in blob.tags.items():
self.assertEqual(tags[key], value)
- @GlobalResourceGroupPreparer()
- @StorageAccountPreparer(random_name_enabled=True, location="canadacentral", name_prefix='pytagstorage')
+ @pytest.mark.playback_test_only
+ @GlobalStorageAccountPreparer()
def test_filter_blobs(self, resource_group, location, storage_account, storage_account_key):
self._setup(storage_account, storage_account_key)
container_name1 = self._create_container(prefix="container1")
@@ -292,7 +315,7 @@ def test_filter_blobs(self, resource_group, location, storage_account, storage_a
if self.is_live:
sleep(10)
- where = "tag1='firsttag'"
+ where = "tag1='firsttag' and tag2='secondtag'"
blob_list = self.bsc.find_blobs_by_tags(filter_expression=where, results_per_page=2).by_page()
first_page = next(blob_list)
items_on_page1 = list(first_page)
@@ -301,6 +324,9 @@ def test_filter_blobs(self, resource_group, location, storage_account, storage_a
self.assertEqual(2, len(items_on_page1))
self.assertEqual(2, len(items_on_page2))
+ self.assertEqual(len(items_on_page2[0]['tags']), 2)
+ self.assertEqual(items_on_page2[0]['tags']['tag1'], 'firsttag')
+ self.assertEqual(items_on_page2[0]['tags']['tag2'], 'secondtag')
@pytest.mark.live_test_only
@GlobalResourceGroupPreparer()
diff --git a/sdk/storage/azure-storage-blob/tests/test_blob_tags_async.py b/sdk/storage/azure-storage-blob/tests/test_blob_tags_async.py
index 4d4804c4e41d..755018a18a6c 100644
--- a/sdk/storage/azure-storage-blob/tests/test_blob_tags_async.py
+++ b/sdk/storage/azure-storage-blob/tests/test_blob_tags_async.py
@@ -19,7 +19,7 @@
from _shared.testcase import GlobalStorageAccountPreparer, GlobalResourceGroupPreparer
from azure.core.exceptions import (
- ResourceExistsError, ResourceModifiedError)
+ ResourceExistsError, ResourceModifiedError, HttpResponseError)
from azure.storage.blob import BlobBlock
from azure.storage.blob.aio import BlobServiceClient
#------------------------------------------------------------------------------
@@ -93,6 +93,31 @@ async def test_set_blob_tags(self, resource_group, location, storage_account, st
# Assert
self.assertIsNotNone(resp)
+ @pytest.mark.playback_test_only
+ @GlobalStorageAccountPreparer()
+ @AsyncStorageTestCase.await_prepared_test
+ async def test_set_blob_tags_with_lease(self, resource_group, location, storage_account, storage_account_key):
+ await self._setup(storage_account, storage_account_key)
+ blob_client, _ = await self._create_block_blob()
+ lease = await blob_client.acquire_lease()
+
+ # Act
+ blob_tags = {"tag1": "firsttag", "tag2": "secondtag", "tag3": "thirdtag"}
+
+ with self.assertRaises(HttpResponseError):
+ await blob_client.set_blob_tags(blob_tags)
+ await blob_client.set_blob_tags(blob_tags, lease=lease)
+
+ await blob_client.get_blob_tags()
+ with self.assertRaises(HttpResponseError):
+ await blob_client.get_blob_tags(lease="'d92e6954-3274-4715-811c-727ca7145303'")
+ resp = await blob_client.get_blob_tags(lease=lease)
+
+ self.assertIsNotNone(resp)
+ self.assertEqual(len(resp), 3)
+
+ await blob_client.delete_blob(lease=lease)
+
@pytest.mark.playback_test_only
@GlobalStorageAccountPreparer()
@AsyncStorageTestCase.await_prepared_test
@@ -276,8 +301,8 @@ async def test_list_blobs_returns_tags(self, resource_group, location, storage_a
for key, value in blob.tags.items():
self.assertEqual(tags[key], value)
- @GlobalResourceGroupPreparer()
- @StorageAccountPreparer(random_name_enabled=True, location="canadacentral", name_prefix='pytagstorage')
+ @pytest.mark.playback_test_only
+ @GlobalStorageAccountPreparer()
@AsyncStorageTestCase.await_prepared_test
async def test_filter_blobs(self, resource_group, location, storage_account, storage_account_key):
await self._setup(storage_account, storage_account_key)
@@ -294,7 +319,7 @@ async def test_filter_blobs(self, resource_group, location, storage_account, sto
if self.is_live:
sleep(10)
- where = "tag1='firsttag'"
+ where = "\"tag1\"='firsttag' and \"tag2\"='secondtag'"
blob_list = self.bsc.find_blobs_by_tags(filter_expression=where, results_per_page=2).by_page()
first_page = await blob_list.__anext__()
items_on_page1 = list()
@@ -307,4 +332,7 @@ async def test_filter_blobs(self, resource_group, location, storage_account, sto
self.assertEqual(2, len(items_on_page1))
self.assertEqual(2, len(items_on_page2))
+ self.assertEqual(len(items_on_page2[0]['tags']), 2)
+ self.assertEqual(items_on_page2[0]['tags']['tag1'], 'firsttag')
+ self.assertEqual(items_on_page2[0]['tags']['tag2'], 'secondtag')
#------------------------------------------------------------------------------