diff --git a/src/azure-cli/azure/cli/command_modules/storage/_params.py b/src/azure-cli/azure/cli/command_modules/storage/_params.py index 6176b6b9e22..7b32bbe0e4e 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/_params.py +++ b/src/azure-cli/azure/cli/command_modules/storage/_params.py @@ -34,10 +34,9 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem from azure.cli.core.commands.parameters import get_resource_name_completion_list - from .completers import get_storage_name_completion_list + from .completers import get_storage_name_completion_list, get_storage_name_completion_list_track2 + from ._client_factory import cf_blob_service, cf_container_client, cf_share_client - t_base_blob_service = self.get_sdk('blob.baseblobservice#BaseBlobService') - t_file_service = self.get_sdk('file#FileService') t_share_service = self.get_sdk('_share_service_client#ShareServiceClient', resource_type=ResourceType.DATA_STORAGE_FILESHARE) t_queue_service = self.get_sdk('_queue_service_client#QueueServiceClient', @@ -55,20 +54,18 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem local_context_attribute=LocalContextAttribute( name='storage_account_name', actions=[LocalContextAction.GET])) blob_name_type = CLIArgumentType(options_list=['--blob-name', '-b'], help='The blob name.', - completer=get_storage_name_completion_list(t_base_blob_service, 'list_blobs', - parent='container_name')) + completer=get_storage_name_completion_list_track2( + cf_container_client, 'list_blobs', required='container_name')) container_name_type = CLIArgumentType(options_list=['--container-name', '-c'], help='The container name.', - completer=get_storage_name_completion_list(t_base_blob_service, - 'list_containers')) + completer=get_storage_name_completion_list_track2( + cf_blob_service, 'list_containers')) directory_type = CLIArgumentType(options_list=['--directory-name', '-d'], help='The directory name.', - completer=get_storage_name_completion_list(t_file_service, - 'list_directories_and_files', - parent='share_name')) + completer=get_storage_name_completion_list_track2( + cf_share_client, 'list_directories_and_files', required='share_name')) file_name_type = CLIArgumentType(options_list=['--file-name', '-f'], - completer=get_storage_name_completion_list(t_file_service, - 'list_directories_and_files', - parent='share_name')) + completer=get_storage_name_completion_list_track2( + cf_share_client, 'list_directories_and_files', required='share_name')) share_name_type = CLIArgumentType(options_list=['--share-name', '-s'], help='The file share name.', completer=get_storage_name_completion_list(t_share_service, 'list_shares')) table_name_type = CLIArgumentType(options_list=['--table-name', '-t'], help='The table name.', @@ -978,7 +975,7 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem help='Show nextMarker in result when specified.') with self.argument_context('storage blob generate-sas', resource_type=ResourceType.DATA_STORAGE_BLOB) as c: - from .completers import get_storage_acl_name_completion_list + from .completers import get_storage_acl_name_completion_list_track2 t_blob_permissions = self.get_sdk('_models#BlobSasPermissions', resource_type=ResourceType.DATA_STORAGE_BLOB) c.register_sas_arguments() @@ -1001,8 +998,8 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem "The expiry parameter and '--auth-mode login' are required if this argument is specified. ") c.argument('id', options_list='--policy-name', validator=validate_policy, help='The name of a stored access policy within the container\'s ACL.', - completer=get_storage_acl_name_completion_list(t_base_blob_service, 'container_name', - 'get_access_policy')) + completer=get_storage_acl_name_completion_list_track2( + cf_container_client, 'get_container_access_policy', required='container_name')) c.argument('permission', options_list='--permissions', help=sas_help.format(get_permission_help_string(t_blob_permissions)), validator=get_permission_validator(t_blob_permissions)) @@ -1694,13 +1691,13 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem "cannot be modified or deleted.") with self.argument_context('storage container policy') as c: - from .completers import get_storage_acl_name_completion_list + from .completers import get_storage_acl_name_completion_list_track2 t_container_permissions = self.get_sdk('_models#ContainerSasPermissions', resource_type=ResourceType.DATA_STORAGE_BLOB) c.argument('container_name', container_name_type) c.argument('policy_name', options_list=('--name', '-n'), help='The stored access policy name.', - completer=get_storage_acl_name_completion_list(t_base_blob_service, 'container_name', - 'get_access_policy')) + completer=get_storage_acl_name_completion_list_track2( + cf_container_client, 'get_container_access_policy', required='container_name')) help_str = 'Allowed values: {}. Can be combined'.format(get_permission_help_string(t_container_permissions)) c.argument('permission', options_list='--permissions', help=help_str, validator=get_permission_validator(t_container_permissions)) @@ -1720,14 +1717,14 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem 'Environment variable: AZURE_STORAGE_AUTH_MODE') with self.argument_context('storage container generate-sas', resource_type=ResourceType.DATA_STORAGE_BLOB) as c: - from .completers import get_storage_acl_name_completion_list + from .completers import get_storage_acl_name_completion_list_track2 t_container_permissions = self.get_sdk('_models#ContainerSasPermissions', resource_type=ResourceType.DATA_STORAGE_BLOB) c.register_sas_arguments() c.argument('id', options_list='--policy-name', validator=validate_policy, help='The name of a stored access policy within the container\'s ACL.', - completer=get_storage_acl_name_completion_list(t_base_blob_service, 'container_name', - 'get_access_policy')) + completer=get_storage_acl_name_completion_list_track2( + cf_container_client, 'get_container_access_policy', required='container_name')) c.argument('permission', options_list='--permissions', help=sas_help.format(get_permission_help_string(t_container_permissions)), validator=get_permission_validator(t_container_permissions)) @@ -2208,17 +2205,17 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem c.extra('snapshot', help="A string that represents the snapshot version, if applicable.") with self.argument_context('storage file generate-sas') as c: - from .completers import get_storage_acl_name_completion_list + from .completers import get_storage_acl_name_completion_list_track2 c.register_path_argument() c.register_sas_arguments() c.extra('share_name', share_name_type, required=True) - t_file_svc = self.get_sdk('file.fileservice#FileService') t_file_permissions = self.get_sdk('_models#FileSasPermissions', resource_type=ResourceType.DATA_STORAGE_FILESHARE) c.argument('id', options_list='--policy-name', - help='The name of a stored access policy within the container\'s ACL.', - completer=get_storage_acl_name_completion_list(t_file_svc, 'container_name', 'get_container_acl')) + help='The name of a stored access policy within the file share\'s ACL.', + completer=get_storage_acl_name_completion_list_track2( + cf_share_client, 'get_share_access_policy', required='share_name')) c.argument('permission', options_list='--permissions', help=sas_help.format(get_permission_help_string(t_file_permissions)), validator=get_permission_validator(t_file_permissions)) diff --git a/src/azure-cli/azure/cli/command_modules/storage/completers.py b/src/azure-cli/azure/cli/command_modules/storage/completers.py index acc8b2427cb..e391358e845 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/completers.py +++ b/src/azure-cli/azure/cli/command_modules/storage/completers.py @@ -88,6 +88,30 @@ def completer(cmd, _, namespace): return completer +def _get_track2_client(cmd, namespace, client_factory, required=None): + if required and not getattr(namespace, required, None): + return None + validate_client_parameters(cmd, namespace) + return client_factory(cmd.cli_ctx, vars(namespace).copy()) + + +def _get_name(item): + if isinstance(item, dict): + return item.get('name') + return getattr(item, 'name', None) + + +def get_storage_name_completion_list_track2(client_factory, func, required=None): + @Completer + def completer(cmd, _, namespace): + client = _get_track2_client(cmd, namespace, client_factory, required=required) + if not client: + return [] + return sorted(x for x in (_get_name(item) for item in getattr(client, func)()) if x) + + return completer + + def get_storage_acl_name_completion_list(service, container_param, func): @Completer def completer(cmd, _, namespace): @@ -97,3 +121,22 @@ def completer(cmd, _, namespace): return list(getattr(client, func)(container_name)) return completer + + +def _get_policy_id(item): + if isinstance(item, dict): + return item.get('id') + return getattr(item, 'id', None) + + +def get_storage_acl_name_completion_list_track2(client_factory, func, required=None): + @Completer + def completer(cmd, _, namespace): + client = _get_track2_client(cmd, namespace, client_factory, required=required) + if not client: + return [] + policy = getattr(client, func)() + identifiers = policy.get('signed_identifiers', []) if isinstance(policy, dict) else policy + return sorted(x for x in (_get_policy_id(item) for item in identifiers or []) if x) + + return completer diff --git a/src/azure-cli/azure/cli/command_modules/storage/tests/latest/recordings/test_storage_container_list_scenarios.yaml b/src/azure-cli/azure/cli/command_modules/storage/tests/latest/recordings/test_storage_container_list_scenarios.yaml index c7820ec4359..47a2227259d 100644 --- a/src/azure-cli/azure/cli/command_modules/storage/tests/latest/recordings/test_storage_container_list_scenarios.yaml +++ b/src/azure-cli/azure/cli/command_modules/storage/tests/latest/recordings/test_storage_container_list_scenarios.yaml @@ -15,12 +15,12 @@ interactions: ParameterSetName: - -n -g --query -o User-Agent: - - AZURECLI/2.86.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) method: POST uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Storage/storageAccounts/clitest000002/listKeys?api-version=2025-08-01&$expand=kerb response: body: - string: '{"keys":[{"creationTime":"2026-05-14T08:48:13.5747601Z","keyName":"key1","value":"veryFakedStorageAccountKey==","permissions":"FULL"},{"creationTime":"2026-05-14T08:48:13.5747601Z","keyName":"key2","value":"veryFakedStorageAccountKey==","permissions":"FULL"}]}' + string: '{"keys":[{"creationTime":"2026-08-13T06:36:35.8703166Z","keyName":"key1","value":"veryFakedStorageAccountKey==","permissions":"FULL"},{"creationTime":"2026-08-13T06:36:35.8703166Z","keyName":"key2","value":"veryFakedStorageAccountKey==","permissions":"FULL"}]}' headers: cache-control: - no-cache @@ -29,23 +29,23 @@ interactions: content-type: - application/json date: - - Thu, 14 May 2026 08:48:41 GMT + - Thu, 13 Aug 2026 06:36:59 GMT expires: - '-1' pragma: - no-cache - server: - - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE x-content-type-options: - nosniff x-ms-operation-identifier: - - tenantId=54826b22-38d6-4fb2-bad9-b7b93a3e9c5a,objectId=a7250e3a-0e5e-48e2-9a34-45f1f5e1a91e/eastus2euap/147b46d5-0f34-4bab-98e8-51e87bcd1e38 + - tenantId=4f00b3b6-2940-4f2c-b037-94637c180d30,objectId=5013d97e-358c-4cfc-9161-ea0253f5f457/westus/1fd0c802-9b69-4593-9174-2bed6db9045c x-ms-ratelimit-remaining-subscription-resource-requests: - '799' - x-ms-throttling-version: - - v1 + x-msedge-ref: + - 'Ref A: EE778FD9A1A649F3BF5C4508EB26798D Ref B: PER201000403029 Ref C: 2026-08-13T06:36:59Z' status: code: 200 message: OK @@ -65,9 +65,9 @@ interactions: ParameterSetName: - -n --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:48:43 GMT + - Thu, 13 Aug 2026 06:37:00 GMT x-ms-version: - '2026-04-06' method: PUT @@ -79,11 +79,11 @@ interactions: content-length: - '0' date: - - Thu, 14 May 2026 08:48:44 GMT + - Thu, 13 Aug 2026 06:37:01 GMT etag: - - '"0x8DEB1959BC5FCE6"' + - '"0x8DEF90548093F79"' last-modified: - - Thu, 14 May 2026 08:48:45 GMT + - Thu, 13 Aug 2026 06:37:01 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 x-ms-version: @@ -107,9 +107,9 @@ interactions: ParameterSetName: - -n --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:48:45 GMT + - Thu, 13 Aug 2026 06:37:01 GMT x-ms-version: - '2026-04-06' method: PUT @@ -121,11 +121,11 @@ interactions: content-length: - '0' date: - - Thu, 14 May 2026 08:48:47 GMT + - Thu, 13 Aug 2026 06:37:01 GMT etag: - - '"0x8DEB1959D3E6CCF"' + - '"0x8DEF90548D2D544"' last-modified: - - Thu, 14 May 2026 08:48:47 GMT + - Thu, 13 Aug 2026 06:37:02 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 x-ms-version: @@ -147,7 +147,7 @@ interactions: ParameterSetName: - -n -g --container-delete-retention-days --enable-container-delete-retention User-Agent: - - AZURECLI/2.86.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) method: GET uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Storage/storageAccounts/clitest000002/blobServices/default?api-version=2025-08-01 response: @@ -161,21 +161,23 @@ interactions: content-type: - application/json date: - - Thu, 14 May 2026 08:48:50 GMT + - Thu, 13 Aug 2026 06:37:03 GMT expires: - '-1' pragma: - no-cache - server: - - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE x-content-type-options: - nosniff x-ms-operation-identifier: - - tenantId=54826b22-38d6-4fb2-bad9-b7b93a3e9c5a,objectId=a7250e3a-0e5e-48e2-9a34-45f1f5e1a91e/eastus2euap/296f9f44-3337-40b2-b3f0-69b1a3a81e02 - x-ms-throttling-version: - - v2 + - tenantId=4f00b3b6-2940-4f2c-b037-94637c180d30,objectId=5013d97e-358c-4cfc-9161-ea0253f5f457/westus/8fe1b188-5060-4d6c-b404-89437c82ad41 + x-ms-ratelimit-remaining-subscription-global-reads: + - '3749' + x-msedge-ref: + - 'Ref A: 8D2B262BBE474CC996C47DFFC9D55A19 Ref B: PER201000404052 Ref C: 2026-08-13T06:37:03Z' status: code: 200 message: OK @@ -199,7 +201,7 @@ interactions: ParameterSetName: - -n -g --container-delete-retention-days --enable-container-delete-retention User-Agent: - - AZURECLI/2.86.0 azsdk-python-core/1.39.0 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-core/1.39.0 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) method: PUT uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Storage/storageAccounts/clitest000002/blobServices/default?api-version=2025-08-01 response: @@ -213,23 +215,25 @@ interactions: content-type: - application/json date: - - Thu, 14 May 2026 08:48:55 GMT + - Thu, 13 Aug 2026 06:37:04 GMT expires: - '-1' pragma: - no-cache - server: - - Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0 strict-transport-security: - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE x-content-type-options: - nosniff x-ms-operation-identifier: - - tenantId=54826b22-38d6-4fb2-bad9-b7b93a3e9c5a,objectId=a7250e3a-0e5e-48e2-9a34-45f1f5e1a91e/eastus2euap/002424c9-24d6-4aed-a056-09b12a1d73a7 + - tenantId=4f00b3b6-2940-4f2c-b037-94637c180d30,objectId=5013d97e-358c-4cfc-9161-ea0253f5f457/westus/871b432c-6b5c-4588-ab8d-3026783892ac + x-ms-ratelimit-remaining-subscription-global-writes: + - '2999' x-ms-ratelimit-remaining-subscription-writes: - '199' - x-ms-throttling-version: - - v2 + x-msedge-ref: + - 'Ref A: 353FB98285BF4DD69ECBDFF3D0780057 Ref B: PER201000403034 Ref C: 2026-08-13T06:37:04Z' status: code: 200 message: OK @@ -247,9 +251,9 @@ interactions: ParameterSetName: - --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:48:56 GMT + - Thu, 13 Aug 2026 06:37:05 GMT x-ms-version: - '2026-04-06' method: GET @@ -258,14 +262,14 @@ interactions: body: string: "\uFEFF5000con1000003Thu, - 14 May 2026 08:48:45 GMT\"0x8DEB1959BC5FCE6\"unlockedavailable$account-encryption-keyfalsefalsefalsefalsecon2000004Thu, - 14 May 2026 08:48:47 GMT\"0x8DEB1959D3E6CCF\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse\"0x8DEF90548093F79\"unlockedavailable$account-encryption-keyfalsefalsefalsefalsecon2000004Thu, + 13 Aug 2026 06:37:02 GMT\"0x8DEF90548D2D544\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse" headers: content-type: - application/xml date: - - Thu, 14 May 2026 08:48:57 GMT + - Thu, 13 Aug 2026 06:37:05 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 transfer-encoding: @@ -291,9 +295,9 @@ interactions: ParameterSetName: - -n --metadata --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:48:58 GMT + - Thu, 13 Aug 2026 06:37:06 GMT x-ms-meta-test: - '1' x-ms-version: @@ -307,11 +311,11 @@ interactions: content-length: - '0' date: - - Thu, 14 May 2026 08:49:00 GMT + - Thu, 13 Aug 2026 06:37:07 GMT etag: - - '"0x8DEB195A521BDE0"' + - '"0x8DEF9054BFD47B8"' last-modified: - - Thu, 14 May 2026 08:49:01 GMT + - Thu, 13 Aug 2026 06:37:07 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 x-ms-version: @@ -333,9 +337,9 @@ interactions: ParameterSetName: - -n --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:49:01 GMT + - Thu, 13 Aug 2026 06:37:08 GMT x-ms-version: - '2026-04-06' method: GET @@ -347,11 +351,11 @@ interactions: content-length: - '0' date: - - Thu, 14 May 2026 08:49:03 GMT + - Thu, 13 Aug 2026 06:37:08 GMT etag: - - '"0x8DEB195A521BDE0"' + - '"0x8DEF9054BFD47B8"' last-modified: - - Thu, 14 May 2026 08:49:01 GMT + - Thu, 13 Aug 2026 06:37:07 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 x-ms-default-encryption-scope: @@ -389,9 +393,9 @@ interactions: ParameterSetName: - --include-metadata --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:49:04 GMT + - Thu, 13 Aug 2026 06:37:09 GMT x-ms-version: - '2026-04-06' method: GET @@ -400,14 +404,14 @@ interactions: body: string: "\uFEFF5000con1000003Thu, - 14 May 2026 08:49:01 GMT\"0x8DEB195A521BDE0\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse1con2000004Thu, - 14 May 2026 08:48:47 GMT\"0x8DEB1959D3E6CCF\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse\"0x8DEF9054BFD47B8\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse1con2000004Thu, + 13 Aug 2026 06:37:02 GMT\"0x8DEF90548D2D544\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse" headers: content-type: - application/xml date: - - Thu, 14 May 2026 08:49:05 GMT + - Thu, 13 Aug 2026 06:37:10 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 transfer-encoding: @@ -431,9 +435,9 @@ interactions: ParameterSetName: - --num-results --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:49:06 GMT + - Thu, 13 Aug 2026 06:37:10 GMT x-ms-version: - '2026-04-06' method: GET @@ -442,12 +446,12 @@ interactions: body: string: "\uFEFF1con1000003Thu, - 14 May 2026 08:49:01 GMT\"0x8DEB195A521BDE0\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse/clitest000002/con2000004" + 13 Aug 2026 06:37:07 GMT\"0x8DEF9054BFD47B8\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse/clitest000002/con2000004" headers: content-type: - application/xml date: - - Thu, 14 May 2026 08:49:09 GMT + - Thu, 13 Aug 2026 06:37:11 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 transfer-encoding: @@ -471,9 +475,9 @@ interactions: ParameterSetName: - --num-results --show-next-marker --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:49:09 GMT + - Thu, 13 Aug 2026 06:37:11 GMT x-ms-version: - '2026-04-06' method: GET @@ -482,12 +486,12 @@ interactions: body: string: "\uFEFF1con1000003Thu, - 14 May 2026 08:49:01 GMT\"0x8DEB195A521BDE0\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse/clitest000002/con2000004" + 13 Aug 2026 06:37:07 GMT\"0x8DEF9054BFD47B8\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse/clitest000002/con2000004" headers: content-type: - application/xml date: - - Thu, 14 May 2026 08:49:11 GMT + - Thu, 13 Aug 2026 06:37:11 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 transfer-encoding: @@ -511,9 +515,9 @@ interactions: ParameterSetName: - --marker --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:49:12 GMT + - Thu, 13 Aug 2026 06:37:13 GMT x-ms-version: - '2026-04-06' method: GET @@ -522,13 +526,13 @@ interactions: body: string: "\uFEFF/clitest000002/con20000045000con2000004Thu, - 14 May 2026 08:48:47 GMT\"0x8DEB1959D3E6CCF\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse\"0x8DEF90548D2D544\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse" headers: content-type: - application/xml date: - - Thu, 14 May 2026 08:49:13 GMT + - Thu, 13 Aug 2026 06:37:13 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 transfer-encoding: @@ -552,9 +556,9 @@ interactions: ParameterSetName: - --prefix --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:49:15 GMT + - Thu, 13 Aug 2026 06:37:15 GMT x-ms-version: - '2026-04-06' method: GET @@ -563,13 +567,13 @@ interactions: body: string: "\uFEFFcon15000con1000003Thu, - 14 May 2026 08:49:01 GMT\"0x8DEB195A521BDE0\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse\"0x8DEF9054BFD47B8\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse" headers: content-type: - application/xml date: - - Thu, 14 May 2026 08:49:16 GMT + - Thu, 13 Aug 2026 06:37:15 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 transfer-encoding: @@ -595,9 +599,9 @@ interactions: ParameterSetName: - -n --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:49:17 GMT + - Thu, 13 Aug 2026 06:37:17 GMT x-ms-version: - '2026-04-06' method: DELETE @@ -609,7 +613,7 @@ interactions: content-length: - '0' date: - - Thu, 14 May 2026 08:49:19 GMT + - Thu, 13 Aug 2026 06:37:18 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 x-ms-version: @@ -631,9 +635,9 @@ interactions: ParameterSetName: - --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:49:20 GMT + - Thu, 13 Aug 2026 06:37:18 GMT x-ms-version: - '2026-04-06' method: GET @@ -642,13 +646,13 @@ interactions: body: string: "\uFEFF5000con1000003Thu, - 14 May 2026 08:49:01 GMT\"0x8DEB195A521BDE0\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse\"0x8DEF9054BFD47B8\"unlockedavailable$account-encryption-keyfalsefalsefalsefalse" headers: content-type: - application/xml date: - - Thu, 14 May 2026 08:49:21 GMT + - Thu, 13 Aug 2026 06:37:19 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 transfer-encoding: @@ -672,9 +676,9 @@ interactions: ParameterSetName: - --include-deleted --account-name --account-key User-Agent: - - AZURECLI/2.86.0 azsdk-python-storage-blob/12.29.0b1 Python/3.12.10 (Windows-10-10.0.19045-SP0) + - AZURECLI/2.89.0 azsdk-python-storage-blob/12.29.0b1 Python/3.11.9 (Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.31) x-ms-date: - - Thu, 14 May 2026 08:49:22 GMT + - Thu, 13 Aug 2026 06:37:20 GMT x-ms-version: - '2026-04-06' method: GET @@ -683,15 +687,15 @@ interactions: body: string: "\uFEFF5000con1000003Thu, - 14 May 2026 08:49:01 GMT\"0x8DEB195A521BDE0\"unlockedavailable$account-encryption-keyfalsefalsefalsefalsecon2000004true01DCE37E7AC7CBC7Thu, - 14 May 2026 08:48:47 GMT\"0x8DEB1959D3E6CCF\"lockedleasedfixed$account-encryption-keyfalsefalsefalsefalseThu, - 14 May 2026 08:49:19 GMT7\"0x8DEF9054BFD47B8\"unlockedavailable$account-encryption-keyfalsefalsefalsefalsecon2000004true01DD2AEE265B9179Thu, + 13 Aug 2026 06:37:02 GMT\"0x8DEF90548D2D544\"lockedleasedfixed$account-encryption-keyfalsefalsefalsefalseThu, + 13 Aug 2026 06:37:18 GMT7" headers: content-type: - application/xml date: - - Thu, 14 May 2026 08:49:24 GMT + - Thu, 13 Aug 2026 06:37:20 GMT server: - Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 transfer-encoding: